好的,所以我不确定该部分节点的正确用语是什么,但我试图从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 :(得分:0)
XMLReader没有自动映射。像$xml->value->en;
这样的东西是行不通的。
XMLReader使用$xml->read();
从XML中提取节点。你有可能。将一些逻辑置于验证Location*
标记名的条件中。它需要读取子节点以获取en
元素节点。
或者让XMLReader将外部节点(您发布的XML片段的父节点)扩展为DOM。然后,您可以在其上使用Xpath或将其转换为SimpleXMLElement。