Ниже мой XML с пространством именполучить значения из Xpath
<?xml version="1.0" encoding="UTF-8"?>
<hotels xmlns="http://www.test.com/schemas/messages" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://www.test.com/schemas/messages">
<hotel >
<rooms>
<room>
<rates>
<rate id="1" adults="1" child="0"></rate>
<rate id="2" adults="2" child="0"></rate>
<rate id="3" adults="1" child="0"></rate>
</rates>
</room>
<room>
<rates>
<rate id="4" adults="1" child="0"></rate>
<rate id="5" adults="2" child="0"></rate>
<rate id="6" adults="2" child="0"></rate>
</rates>
</room>
</rooms>
</hotel>
</hotels>
я пытаюсь ниже код PHP (XPath), используя Еогеасп, чтобы получить значения ratenode
$xd = simplexml_load_file('C:/inetpub/vhosts/test.com/data_download/q.xml');
$xd->registerXPathNamespace("n", "http://www.test.com/schemas/messages");
foreach($xd->xpath("//n:hotels/n:hotel") as $xd_item)
{
echo 'item - A';
foreach($xd_item->xpath("rooms/room") as $xd_room)
{
foreach($xd_room->xpath("rates/rate") as $xd_rate)
{
echo 'rate - C';
}
}
}
В Еогеасп от $ xd_item является не работает. Я имею в виду 2-й foreach его конец со значением "echo 'item - A';"
любой может мне помочь?
Не знаю, как вы думаете, 'эхо«скорость - C'' получит „значения ratenode“, но обратите внимание, что 'комнаты',' room', 'rates' и' rate' должны быть префиксны с помощью 'n:', потому что они тоже находятся в стандартном 'http: // www.test.com/schemas/messages' Пространство имен. – kjhughes
спасибо, Как я вхожу в сторону, что-то вроде echo '$ xd_rate-> attributes() -> id' – Note
Я бы предложил вместо этого использовать DomDocument: http://www.w3schools.com/php/php_xml_dom.asp , так как это совпадение более легко разобрать xml, используя его – Armen