从xml获取特定数据->;php?

从xml获取特定数据->;php?,php,xml,Php,Xml,我想从以下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">

我想从以下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>

4.
3.
在这里聊天。。。
skfgjh kjgh fdskgjhdf kgjhdf GKJDF gkjd gkjdfhg dkfjhg
我想和玩家交流一次,和聊天一次,但似乎无法解决这个问题。。。我也想把属性去掉,但不知道怎么做

以下是我尝试过的:

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

foreach($userXML->chats as $nchats){ 
    echo $nchats->chat.'<br>';     
} 
$userXML=simplexml\u加载文件('xml\u chats/0^0.xml')或死(“错误”);
foreach($userXML->chats作为$nchats){
echo$nchats->chat.“
”; }
我做错了什么?我怎样才能做到这一点

提前感谢:-)

您可以尝试使用该方法选择感兴趣的节点:

$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) { ... }
像这样试试

$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>';
    }
    }
} 
$xml=simplexml\u加载\u文件(文件名);
foreach($xml->chats作为$nchats){
foreach($nchats作为$chat)
{
echo$nchats->chat.“
”; foreach($chat->attributes()作为$key=>$attrib) { echo$key.“=>”$attrib.“
”; } } }