我正在尝试解析xml字符串$content
,其结构如下:
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">269</int></lst>
</response>
我对两个int
字段感兴趣(此处的值为0
和269
)。
我通过以下方式加载xml:
$xml = simplexml_load_string($content);
然后我预料到:
$fields = $xml->xpath('int');
会给我一些这些字段,唉,它是空的。
我做错了什么?如何解析此示例中的int字段?
答案 0 :(得分:2)
你忘了斜线
$fields = $xml->xpath('//int');
也
$status= $xml->xpath('//int[@name="status"]');
$QTime= $xml->xpath('//int[@name="QTime"]');
答案 1 :(得分:1)
试
$xml ='<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">269</int></lst>
</response>';
$xml = simplexml_load_string($xml);
print_r($xml);
echo $field = $xml->lst->int[0];
echo $fields = $xml->lst->int[1];
对于属性: -
echo $attr1 = $xml->lst->int[0]->attributes();
echo $attr2 = $xml->lst->int[1]->attributes();
答案 2 :(得分:1)
你需要稍微改变你的xpath表达式:
$fields = $xml->xpath('lst/int');
这将返回包含节点值和属性名称值的完整数组。然后你可以像以下一样获取它们:
$fields[0]->{0} AND $fields[1]->{0}