假设我有一个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');
但是不起作用。
答案 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');