PHP SimpleXML 获取文档节点

PHP SimpleXML get document node

我需要从 xml 文档的最外层节点(文档本身)中提取信息。使用下面的 xml:

<?xml version="1.0" encoding="UTF-8" ?>
<revue date="2015" issue="12345">
  <innernode>Oi</innernode>
</revue>

我想提取 201512345。如果我尝试使用 foreach 循环

读取节点 revue,我会失败
foreach ($xml->revue as $revueIn) {
    foreach ($revueIn->attributes() as $z => $y) { 

看看我有没有错别字之类的,我倒转了innernoderevue

<?xml version="1.0" encoding="UTF-8" ?>
<innernode>
  <revue date="2015" issue="12345">Oi</revue>
</innernode>

及以上代码有效(找到 revue 节点并正确读取其属性)

因此,在我看来,最外层的节点与 SimpleXML 不同treated/perceived。

有谁知道如何访问最外层节点?提前 4 时间。

据我了解,根元素只是您的 xml 变量,因此要访问其属性,您只需使用 foreach ($xml->attributes() as $z => $y).

revue不是文档节点而是元素节点。实际上,它是文档元素。

如果您将 XML 加载到 SimpleXMLElement 中,它将 return 文档元素。您可以使用数组语法来访问属性。

$element = new SimpleXMLElement($xml);
var_dump((string)$element['date']);

输出:

string(4) "2015"

该属性被 return 编辑为 SimpleXMLElement。您可能需要投射它。

使用 SimpleXMLElement::attributes() 您可以循环访问所有属性。

$element = new SimpleXMLElement($xml);
foreach ($element->attributes() as $name => $value) {
  var_dump($name, (string)$value);
}

输出:

string(4) "date"
string(4) "2015"
string(5) "issue"
string(5) "12345"