<?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']; }