PHPのマニュアルでも目的を達成するためのコードが思いつかなかったため、
ご質問させてください。
結論を申し上げますと
- c属性が333を満たすタグについて
- b属性の値("222")を取得したい
が目的になります。
すべてgetElementByIdでノードを指定してから、getAttributeでcを配列に入れて
すべての要素が"333"に一致するかを検索する方法は思いつくのですが、検索したいc属性の値も
検索対象のノードも大量にあるため、これをすべてループで処理させることはあまり賢しい方法とは
思えないのですが、何か良い方法があればアドバイスを頂ければ幸いです。
宜しくお願い申し上げます。
XML
1<A a="111" b="222" c="333"></A> 2<B a="444" b="555" c="666"></A>
(加筆)
うまくご説明できるかわかりませんが、申し少し分かりやすい例でコードを記載させて頂きます。
PHP
1$cArray=array(111,222,333,444,555,666,777,888,999); 2$xml='<A a="apple" b="banana" c="333"></A> <A a="orange" b="peach" c="666"></A> <A a="pinapple" b="mango" c="999"></A>';//失礼しました、分かりやすいように修正します 3$num=($sampleNode->length);//A,B,Cで3つ 4for ($i=0; $i < $num; $i++) { 5 $searchNode=$sampleNode->item($m)->getAttribute('c'); 6 $resultArray[]=$searchNode; 7} 8$num2=count($cArray);//9つ 9for ($i=0; $i <$num2 ; $i++) { //ループで111,222,333~999がc属性のものをすべて検索 10 if ($cArray[$i]==$resultArray[0]) { 11 $key=0; 12 } elseif($cArray[$i]==$resultArray[1]){ 13 $key=1; 14 }elseif($cArray[$i]==$resultArray[2]){ 15 $key=2; 16} 17$fruit[]=$sampleNode->item($key)->getAttribute('b');//111,222,444,555,,777,888はxmlに存在しないためNull 333=>banana 666=>peach 999=>mangoが取得できる 18}
回答2件
あなたの回答
tips
プレビュー