xml — php xmlreader получает дочерние данные из сложного узла

Итак, я не уверен, что правильный термин для этой части узла, но я пытаюсь получить данные от узла Location1.

Вот XML

<ID>123344</ID>
<Name><![CDATA[The Pavillion]]></Name>
<Date>2014-07-07</Date>
<Country>United Kingdom</Country>
<Location1 GeonameID="8000001"><en><![CDATA[England]]></en></Location1>
<Location2 GeonameID="8000911"><en><![CDATA[West Yorkshire]]></en></Location2>

Вот как я получаю правильные значения для ID и имени

 if ($xml->name == 'ID') {   $xml->read();   $ref = $xml->value;    }
if ($xml->name == 'Name') {   $xml->read();   $name = $xml->value;    }

Но как мне получить значение узла Location1, которым будет Англия. Я пробовал это, но это не работает.

if ($xml->name == 'Location1') {   $xml->read();   $name = $xml->value->en;    }

Я привык использовать simplexml, а не xmlreader, но я заблудился о том, как получить значение из чего-либо, кроме простого узла.

Очень признателен

0

Решение

XMLReader не имеет автоматического сопоставления. Вещи как $xml->value->en; не будет работать.

XMLReader извлекает узел из XML с помощью $xml->read();, У вас есть возможности. Поместите немного логики в условие, которое проверяет Location* название тэга. Нужно прочитать дочерние узлы, чтобы получить en элемент узла.

Или позвольте XMLReader развернуть внешний узел (родительский узел размещенного вами фрагмента XML) в DOM. Затем вы можете использовать Xpath или преобразовать его в SimpleXMLElement.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]