$dom=new DOMDocument('1.0');$dom->load('ceshi.xml');$root=$dom->getElementsByTagName('online');$root=$root->item(0);$userid=$root->getElementsByTagName('userid');foreach($userid as $b){ foreach($b->attributes as $attr){ $value=$attr->nodeValue;$name[].=$attr->nodeName;{if($value=="xiao"){ print_r($name); } }}}$dom->save('ceshi.xml');
來個xml
xiaxin rwet gaoji
問題是按上面那種寫法只迴圈label="xiao"的那一行,也就是只返回那一行nodename值。。
要是按上面寫的話返回的是第一行第二行一起返回的nodename值。。我也沒想出來怎麼改~~新手求教啊!!!
回複討論(解決方案)
你提前列印了$name 數組當然是那個樣子啦,你在外層foreach下面列印$name 就對了。
你提前列印了$name 數組當然是那個樣子啦,你在外層foreach下面列印$name 就對了。
試過了 不是這個原因~~你可以看看啊 列印出的是前兩行的值。。哈哈
這個意思?
$dom=new DOMDocument('1.0');$dom->load('ceshi.xml');$root=$dom->getElementsByTagName('online');$root=$root->item(0);$userid=$root->getElementsByTagName('userid');foreach($userid as $b) { if($b->attributes->getNamedItem('label')->nodeValue == 'xiao') { foreach($b->attributes as $attr){ $res[$attr->nodeName] = $attr->nodeValue; } print_r($res); }}Array
(
[time] => 2007-06-13 13:22:15
[pp] => dasdsa
[label] => xiao
[ip] => dasdsa
)