1

私のXMLを読んで、別のサーバーに移動すると子ノードをループすると、動作が停止します。停止する理由についてのアイデア..

XML は次のとおりです。

<masterxmlholder>   
    <userinfo login="user1">
    <rde-idea:lastlogin code="0">Wed Dec 31 17:00:00 MST 1969</rde-idea:lastlogin>
    </userinfo>

    <userinfo login="user2">
    <rde-idea:lastlogin code="4564568522258">Wed Dec 31 17:00:00 MST 1969</rde-idea:lastlogin>
    </userinfo>
</masterxmlholder>

そして、ここに私が子に到達しようとしているループがあります

foreach ($xml->children() as $user) {
    echo '<tr><td> Name :  </td><td>' . $user['login'] . $user->lastlogin '</td><td>';

}
echo '</table></center>';

これで、各子ノードから表示する name 属性を取得できますが、子の内部ノードを表示することはできません

これはすべて、私が何をしようとしているのかを理解するために縮小されています..しかし、基本的には、子ノードにアクセスしようとしている方法を確認し、おそらく私の欠陥を指摘しています。

読んでくれてありがとう。

4

1 に答える 1

0

lastlogin情報は実際にはノードの子であるため、メソッドを再度userinfo使用して情報を取得する必要があります。children()この例では、初期化できるように XML 名前空間を削除したことに注意してください。$xml

$xmlstring = <<<XML
<masterxmlholder>   
    <userinfo login="user1">
    <lastlogin code="0">Wed Dec 31 17:00:00 MST 1969</lastlogin>
    </userinfo>

    <userinfo login="user2">
    <lastlogin code="4564568522258">Wed Dec 31 17:00:00 MST 1969</lastlogin>
    </userinfo>
</masterxmlholder>
XML;

$xml = new SimpleXMLElement($xmlstring);
echo '<center><table>';

foreach ($xml->children() as $user) {
    $name = $user['login'];
    foreach ($user->children() as $child ) {
       $lastlogin = $child;
    }
    echo '<tr><td> Name :  </td><td>' . $name . $lastlogin . '</td></tr>';
}
echo '</table></center>';

ここでコードをテストしました:http://writecodeonline.com/php/

余談ですが、私はこのcenterタグを使用しません。プレゼンテーションとコンテンツが混在しているため、眉をひそめています。表のスタイルと配置にCSSを使用することを検討してください。

于 2012-04-30T19:28:54.853 に答える