- 締切済み
PHPでXMLを扱いたいのですが
PHPでXMLを扱いたいのですが、わからないところがあります。 <XML> <T> <A> <a> </a> <b> </b> <c> <c1></c1> <c2></c2> </c> </A> <A> <a> </a> <b> </b> <c> <c1></c1> <c2></c2> </c> </A> <A> 以下くりかし・・・ </T> </XML> このような感じのXMLがある時に、<a>,<b>等のタグの中身はちゃんと一つめの<A>、二つめの<A>、のように、 繰り返しある全てを取り出すことが来るのですが、 <c1>のようにもう一つ奥になっているものが取り出せません。 //以下成功するソースです。 foreach(XML->T->A as $value){ $data[]=$value->a; } for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; } echo $file; これだとうまく動作しますが、 //以下失敗するソースです。 foreach(XML->T->A->c as $value){ $data[]=$value->c1; } for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; } echo $file; このように<c1>を取り出そうとすると、繰り返しある<c1>の内の初めの一つしか取りだせません。 もう何回も色々と変えてやっているのですが、どれもうまくいきませんでした。 どうすればいいのでしょうか。分かる方教えて下さい、お願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 >同じやり方でも上の<a>の場合では複数出来るのに、何故下の<c1>の場合では出来ないのでしょうか? foreach ( XML->T->A as $value ) { } <T>のなかにある<A>の個数ですのでサンプルxmlの繰り返しを考慮しないと2回。 foreach(XML->T->A->c as $value){ $data[]=$value->c1; } <T>の<A>の中に<c>は1個ですので1回。 XML-T-A分繰り返せばc1が全て取得できます。 下記サンプルを参考にしてください。 http://hppg.moe.hm/okwave/qa/q7291097/
- taka451213
- ベストアンサー率47% (436/922)
こんばんは。 えーと・・・、これはホントのソース??? >for($i=0,$n=count($data);$i<$n;$i++){ >$file=$data[$i]; >} >echo $file; まぁ、普通に考えて、$fileが上書きされてるので・・・。 >繰り返しある<c1>の内の初めの一つしか取りだせません。 正確には2番目だけしか出ないです・・・はい。
補足
すみません、プログラミング初心者な者で・・・。 書き間違えました、正しくはこうでした。 for($i=0,$n=count($data);$i<$n;$i++){ $file=$data[$i]; echo $file; } 恐らくこれでも間違えていると思うのですが、 同じやり方でも上の<a>の場合では複数出来るのに、何故下の<c1>の場合では出来ないのでしょうか?