Простой способ парсировать XML документы на PHP
28.12.2012
Пример использования функций simplexml_load_file и simplexml_load_string. Также работа с @attributes
Использование simplexml_load_file
1 |
$oXml = simplexml_load_file($myPath.'/yandex.xml'); foreach($oXml->shop->offers->offer as $oOffer) { echo '<pre>'; print_r($oOffer); echo '</pre>'; } |
А вот переделанный пример из официальной документации к simplexml_load_string, пусть будет до кучи:
1 |
$string = <<<XML <?xml version='1.0'?> <document> <title>Forty What?</title> <from>Joe</from> <to>Jane</to> <body> <sub>Test 1</sub> <sub>Test 2</sub> <sub>Test 3</sub> </body> </document> XML; $oXml = simplexml_load_string($string); foreach($oXml->body->sub as $oSub) { echo '<pre>'; print_r($oSub); echo '</pre>'; } |
При работе с этим методом столкнулся с тонкостью, парсер вернул объект:
1 |
SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [0] => двери ) |
1 |
$aAttr = $oXML->attributes(); echo $aAttr['id'].'<br>'; echo (string) $oXML.'<br>'; // $oXML[0] $aTmp["$id"] = (string) $oXML; |
Существует проблема с нодами в именах которых присутствует двоеточие. Подробнее в MJ 534