#php #xml
#php #xml
Вопрос:
Я пытаюсь получить значение из XML-канала, но я не уверен, как его получить. Поток:
<name>
<namerecord nameID="0" platformID="1" platEncID="0" langID="0x0">
Hello World
</namerecord>
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0">
MyName
</namerecord>
<namerecord nameID="6" platformID="1" platEncID="0" langID="0x0">
Another Record
</namerecord>
<namerecord nameID="12" platformID="1" platEncID="0" langID="0x0">
Another Record Again
</namerecord>
Я пытаюсь извлечь элементы из этого, указав, каково значение NameID. Если я нацеливаю его просто как namerecord [0], это неверно в том смысле, в каком мне это нужно.
Я пробовал множество вещей, таких как:
$test = $xml->name->namerecord->attributes('nameId, '12');
Есть предложения?
Ответ №1:
Вот как вы теперь обрабатываете XML:
$dom = new DOM();
$dom->load('your xml here');
$xp = new XPath($dom);
$node = $xp->query('//namerecord[@nameID=12]')->item(0);
$nameID = $node->getAttribute('nameID');
Комментарии:
1. Не уверен, что это за класс DOM (), и он не работает в php5. Я думал, что SimpleXML — лучший способ работы с XML в php?
2. php.net/dom возможно, он не включен в вашей установке или поставляется отдельным пакетом. SimpleXML — это нормально, но думайте о нем как о «DOM-lite»