ホームページ > バックエンド開発 > PHPチュートリアル > 初心者がphpでのXMLの変更について質問しています。

初心者がphpでのXMLの変更について質問しています。

WBOY
リリース: 2016-06-23 14:06:19
オリジナル
1028 人が閲覧しました

$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 に来てください
<?xml version="1.0"?><online> <userid time="2007-06-13 11:20:08" ip="wangqile" label="wang">xiaxin</userid> <userid time="2007-06-13 13:22:15" pp="dasdsa" label="xiao" ip="dasdsa">rwet</userid> <userid time="2007-06-13 17:17:00" ip="dasdsa" label="ji"> gaoji</userid> </online>
ログイン後にコピー


問題は、上記の書き方だと、label="xiao" の行のみがループされる、つまり、その行のノード名の値のみが返されることです。 。
上記に従うと、1行目と2行目に返されたnodenameの値が返されます。 。変更方法が分かりません~~初心者なのでアドバイスお願いします! ! !


ディスカッション (解決策) への返信

$name 配列を事前に出力しました。もちろん、そのように見えます。$name を外側の foreach の下に出力するだけです。

もちろん、事前に $name 配列を出力したので、外側の foreach の下に $name を出力するだけでそのようになります。

試してみましたが、それが原因ではありません~~ 出力されているのは最初の 2 行の値です。 。笑

これはどういう意味ですか?

$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
(
[時間] => 2007-06-13 13:22:15
[pp] => dasdsa
[label] => xiao
[ip] => dasdsa
)

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート