0

次の xml から foreach ループを取得したい:

<?xml version="1.0" encoding="ISO-8859-1"?>
<data>
  <players>
    <player id="1">4</player>
    <player id="2">3</player>
  </players>
  <chats>
    <chat playerid="2">Some chat here...</chat>
    <chat playerid="1">skfgjh kjgh fdskgjhdf kgjhdf gkjd gkjdfhg dkfjhg</chat>
  </chats>
</data>

プレイヤーとの foreach が 1 つ、チャットとの foreach が 1 つ欲しいのですが、これを理解できないようです...属性も出したいのですが、方法がわかりませんか?

これが私が試したことです:

$userXML = simplexml_load_file('xml_chats/0^0.xml') or die ("error");  

foreach($userXML->chats as $nchats){ 
    echo $nchats->chat.'<br>';     
} 

私は何を間違っていますか?どうすればこれを達成できますか?

前もって感謝します :-)

4

2 に答える 2

0

xpathメソッドを使用して、関心のあるノードを選択することができます。

$xml = simplexml_load_string($xml);
$chats = $xml->xpath('/data/chats/chat');    
$players = $xml->xpath('/data/players/player');

または、次のようなノードへの simplexml の魔法のマッピングを使用できます。

foreach ($xml->players->player as $player) { ... }
foreach ($xml->chats->chat as $chat) { ... }
于 2012-09-05T12:29:27.850 に答える
0

このようにしてみてください

$xml=simplexml_load_file(filename);



foreach($xml->chats as $nchats){ 
    foreach($nchats as $chat)
    {
    echo $nchats->chat.'<br>';     
    foreach($chat->attributes() as $key=>$attrib)
    {
     echo $key."=>".$attrib.'<br>';
    }
    }
} 
于 2012-09-05T12:31:24.580 に答える