Чтение XML-данных в PHP, просто - PullRequest
2 голосов
/ 13 декабря 2011
<?xml version="1.0" encoding="utf-8"?>
<mainXML>
    <items>
        <item category="Dekorationer" name="Flot væg" description="Meget flot væg. Passer alle stuer." price="149" />
        <item category="Fritid" name="Fodbold" description="Meget rund bold. Rørt af messi." price="600" />
    </items>
</mainXML>

Как я могу это прочитать?

Так что я могу сделать как php цикл, который выводит категорию, имя и описание, например?

Я пытался и начал с этого:

    $doc = new DOMDocument();
    $doc->load( 'ex.xml' );

    $items = $doc->getElementsByTagName( "item" );
    foreach( $items as $item )
    {
        $categorys = $item->getElementsByTagName( "category" );
        $category = $categorys->item(0)->nodeValue;

        echo $category . " -- ";
    }

Ответы [ 3 ]

2 голосов
/ 13 декабря 2011

category - это атрибут (не тег). См. XML Википедия . Чтобы получить его через DOMElement, используйте getAttribute() Документы :

foreach ($items as $item)
{
    $category = $item->getAttribute('category');
    echo $category, ' -- ';
}

То же самое для description, просто измените имя атрибута, чтобы получить:

foreach ($items as $item)
{
    echo 'Category: ', $item->getAttribute("category"), "\n",
         'Description: ', $item->getAttribute("description"), ' -- ';
}
2 голосов
/ 13 декабря 2011

Я бы порекомендовал PHP simplexml_load_file ()

$xml = simplexml_load_file($xmlFile);
foreach ($xml->items->item as $item) {
    echo $item['category'] . ", " . $item['name'] . ", " . $item['description'] . "\n";
}

ОБНОВЛЕНО, пропущен лишний тег.

1 голос
/ 13 декабря 2011

Вот пример использования PHP SimpleXML, в частности, функции simplexml_load_string .

$xml = '<?xml version="1.0" encoding="utf-8"?>
<mainXML>
    <items>
        <item category="Dekorationer" name="Flot væg" description="Meget flot væg. Passer alle stuer." price="149" />
        <item category="Fritid" name="Fodbold" description="Meget rund bold. Rørt af messi." price="600" />
    </items>
</mainXML>';

 $xml = simplexml_load_string( $xml);

 foreach( $xml->items[0] as $item)
 {
     $attributes = $item[0]->attributes();
     echo 'Category: ' . $attributes['category'] . ', Name: ' . $attributes['name'] . ', Description: ' . $attributes['description'];
 }
...