如何通过php访问xml结构中的特定节点?

时间:2014-05-19 11:28:16

标签: php xml simplexml

我正在尝试解析xml字符串$content,其结构如下:

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">269</int></lst>
</response>

我对两个int字段感兴趣(此处的值为0269)。

我通过以下方式加载xml:

$xml = simplexml_load_string($content);

然后我预料到:

$fields = $xml->xpath('int');

会给我一些这些字段,唉,它是空的。

我做错了什么?如何解析此示例中的int字段?

3 个答案:

答案 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}