我正在尝试读取XML的第一个标记的属性。 这是XML结构
<myxml timestamp="1301467801">
<tag1>value1</tag1>
<tag2>value2</tag2>
…
</myxml>
以下是我尝试获取时间戳属性的方法(尝试了2种方法,将它们列在这里,无效)
$timestamp = $xml->myxml->attributes()->timestamp; //gives Node no longer exists warning
if($xml->myxml && $xml->myxml->attributes()){ //Doesn't enter this loop
$arr = $xml->myxml->attributes();
$timestamp = $arr['timestamp'];
}
有人可以告诉我如何获得属性的价值吗?感谢。
答案 0 :(得分:10)
这是因为您的$xml
实际上指向了根元素。正确的用法是:
$timestamp = $xml->attributes()->timestamp;
答案 1 :(得分:3)
访问属性的正确方法[只要它们属于节点的命名空间]就是使用数组表示法。为命名空间属性保留attributes
。
此外,您应该在其根节点之后命名表示XML文档的变量。这是一个很好的做法,可以防止很多混乱。
$myxml = simplexml_load_string(
'<myxml timestamp="1301467801">
<tag1>value1</tag1>
<tag2>value2</tag2>
</myxml>'
);
echo $myxml['timestamp'];
答案 2 :(得分:1)
<?php
$myxml = simplexml_load_string(
'<myxml timestamp="1301467801">
<tag1>value1</tag1>
<tag2>value2</tag2>
</myxml>'
);
$test = $myxml['timestamp'];
// will asign simpleXMLElement
echo $test; // -> will print nothing
// you need to cast the simpleXMLElement attribute as STRING!!!
$test = (string)$myxml['timestamp'];
echo $test;
?>