如何使用DOM在XML中获取此属性值

时间:2014-02-08 21:34:42

标签: php xml

假设我有一个XML文档,

<node id="234" label="somewhere" >
    <attvalues>
        <attvalue for="ware" value="ews"/>
        <attvalue for="soft" value="sed"/>
        <attvalue for="time" value="121"/>
        <attvalue for="life" value="mone"/>  
    </attvalues>
</node>

我怎样才能得到“时间”元素的值为121?

这就是我要做的节点:

foreach($node->getElementsByTagName('attvalue') as $value){

            $enA[] = $value->getAttribute('for');
            $evA[] = $value->getAttribute('value');

}

但是,如果我只想要时间属性值怎么办?因为上面的代码给出了所有属性及其值。我不知道如何更具体。

我试过像

这样的东西
 $evA[] = $value->getAttribute('time');

但是不起作用。

1 个答案:

答案 0 :(得分:0)

foreach ($node->getElementsByTagName('attvalue') as $value) {
    if ($value->getAttribute('for') != 'time') {
        continue;
    }

    $timeValue = $value->getAttribute('value');
    break;
}

如果XML可能有多个attvalue时间,请将$timeValue定义为数组,然后使用$timeValue[]array_push()函数添加值,如下所示:

    $timeValue[] = $value->getAttribute('value');
    // break; also do not forget to remove the break operator.

您也可以直接使用XPath查询该值:

$xp = new DOMXPath($domDocument);
$value = $xp->evaluate('/node/attvalues/attvalue[@for="time"]/@value');