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>
我想提取 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 不同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"
我需要从 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 不同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"