Чтение XML-данных в PHP, простое

<?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 . " -- "; } 

category является атрибутом (а не тегом). См. XML Wikipedia . Чтобы получить его через DOMElement , используйте getAttribute() Docs :

 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"), ' -- '; } 

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

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

ОБНОВЛЕНО, пропустил дополнительный тег.

Здесь приведен пример использования SimpleXML в PHP, в частности функция 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']; }