XML PHP dizi dönüştürme?

3 Cevap php

Ben böyle bir dizi var ki:

<?php
$colors=array();

$colors[0]['id']=1;
$colors[0]['color']='blue';


$colors[1]['id']=2;
$colors[1]['color']='green';

......
?>

Tüm dizi XML dönüştürülür için en kolay yolu nedir?

3 Cevap

Some working Example for the Data in Question that is on-site: http://stackoverflow.com/a/14143759/367456

Orijinal cevap şöyle:

Bu ön tanımlı uygulamaları bir göz atın:

http://snipplr.com/view/3491/convert-php-array-to-xml-or-simple-xml-object-if-you-wish/

http://vantulder.net/f2o/notities/arraytoxml/

Ayrıca XML dizi dönüştürmek için destek niteliği istiyorsanız, bu uygulama kullanabilirsiniz: http://www.lalit.org/lab/convert-php-array-to-xml-with-attributes/

Nitelik destek için belirli bir şekilde diziyi inşa gerektirir. Özellikleri olmadan xml için doğrudan işleve herhangi bir dizi geçmek ve bir XML alabilirsiniz

Kendinizi sadece çıktılar basit bir işlevi oluşturabilirsiniz. Işlevine elemanları ile dizi geçen ve üst öğe (Belgenin kök öğesi) adını ve her öğenin adını söylüyorum örneğin.

I colors ebeveyn ve color her eleman için varsayalım.

Ben de adlandırılmış anahtarlar color elemanlarının çocuğu olduğu varsayılır:

function xml_from_indexed_array($array, $parent, $name) {

    echo '<?xml version="1.0"?>', "\n";
    echo "<$parent>\n";
    foreach ($array as $element) {
        echo "  <$name>\n";
        foreach ($element as $child => $value) {
            echo "    <$child>$value</$child>\n";
        }
        echo "  </$name>\n";
    }
    echo "</$parent>\n";
}

Gördüğünüz gibi, bu sadece tüm unsurları üzerinde yineleme, ileriye oldukça düz.

Kullanımı Örnek:

<?php
$colors = array();

$colors[0]['id']    = 1;
$colors[0]['color'] = 'blue';

$colors[1]['id']    = 2;
$colors[1]['color'] = 'green';

xml_from_indexed_array($colors, 'colors', 'color');

Örnek Çıktı:

<?xml version="1.0"?>
<colors>
  <color>
    <id>1</id>
    <color>blue</color>
  </color>
  <color>
    <id>2</id>
    <color>green</color>
  </color>
</colors>

Eğer daha derin iç içe daha gelişmiş dizi yapılarının varsa, tekrarlamalı bir şekilde bu çözmek isteyebilirsiniz. Bazı ilgili sorular: