【发布时间】:2015-10-23 11:55:21
【问题描述】:
我需要从 xml 文档的最外层节点(文档本身)中提取信息。使用下面的xml:
<?xml version="1.0" encoding="UTF-8" ?>
<revue date="2015" issue="12345">
<innernode>Oi</innernode>
</revue>
我想提取2015 和12345。如果我尝试使用 foreach 循环读取节点 revue,我将失败
foreach ($xml->revue as $revueIn) {
foreach ($revueIn->attributes() as $z => $y) {
为了查看我是否有错别字或其他内容,我将innernode 和revue 倒置了
<?xml version="1.0" encoding="UTF-8" ?>
<innernode>
<revue date="2015" issue="12345">Oi</revue>
</innernode>
以上代码有效(找到revue 节点并正确读取其属性)
因此,在我看来,SimpleXML 对最外层节点的处理/感知方式有所不同。
有谁知道如何访问最外层的节点?提前 4 点您的时间。
【问题讨论】:
-
试试
foreach ($xml->attributes() as $z => $y) -
@MartinHonnen 提供作为答案,因为它是正确的并且将被授予。 SimpleXML 不将文档作为节点访问(它是否将其视为父节点?)。属性不是节点属性,而是文档属性,必须直接访问,有
attributes()和getName() -
SimpleXML 在迭代中看不到根元素。它应该被链接到 SimpleXML 对象的变量引用。所以 $xml 节点名称将是 'revue'。
-
@splash58 准确地说,它将通过
getName()访问。我在写问题的过程中找到了解决方案,但我认为无论如何我都应该问,因为肯定有人会遇到同样的问题。 -
@tonygil 我的意思就是节点名称:)