我需要从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点你的时间。
答案 0 :(得分:1)
As far as I understand it, the root element is simply your xml
variable so to access its attributes you can simply use foreach ($xml->attributes() as $z => $y)
.
答案 1 :(得分:1)
revue
不是文档节点,而是元素节点。实际上它是文档元素。
如果您将XML加载到SimpleXMLElement
,它将返回文档元素。您可以使用数组语法来访问属性。
$element = new SimpleXMLElement($xml);
var_dump((string)$element['date']);
输出:
string(4) "2015"
该属性以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"