将XML文件元素转换为PHP数组

3
我正在尝试使用Php将Steam组成员列表XML文件转换为数组。 XML文件是:http://steamcommunity.com/groups/starhawk/memberslistxml/?xml=1.xml 元素是成员的Steam ID,例如76561198000264284。
我该如何做?
编辑:到目前为止,我已经使用了类似以下代码:
$array = json_decode(json_encode((array)simplexml_load_string($xml)),1); 

它输出的是前几个元素,而不是特定的元素。

SimpleXML 是一个不错的开始。 - Jon
$array = json_decode(json_encode((array)simplexml_load_string($xml)),1); 我尝试过类似这样的代码,但它仅输出前几个元素,而不是特别从<members>中选择的元素。 - liamp47
你正在做太多的事情 :) 只需使用simplexmlelement并访问您感兴趣的值即可。没有必要通过数组转换来搞乱它,不这样做会更好。 - hakre
2个回答

16

这应该返回完全可访问的数组:

$get = file_get_contents('http://steamcommunity.com/groups/starhawk/memberslistxml/?xml=1.xml');
$arr = simplexml_load_string($get);
print_r($arr);

您现在可以像这样访问项目:

echo $arr->groupID64;
echo $arr->members->steamID64; 

编辑: 要解析streamID,您可以使用for循环。

$ids = $arr->members->steamID64;
foreach($ids as $id) {
    echo $id;
}

谢谢您,但我只想让它输出<members>元素中的SteamID64。 - liamp47

1
你可以使用以下功能代码来获得正确的答案。
<?php
$getfile = file_get_contents('http://steamcommunity.com/groups/starhawk/memberslistxml/?xml=1.xml');

$arr = simplexml_load_string($getfile);

foreach($arr->members->steamID64 as $a => $b) {
    echo "<br>".$a,'="',$b,"\"\n";
}
?>

OUTPUT

steamID64="76561198009904532" 
steamID64="76561198004808757" 
steamID64="76561198000264284" 
steamID64="76561198016710420" 
steamID64="76561198005429187" 
steamID64="76561198030184436" 
steamID64="76561197980763372" 
steamID64="76561197972363016" 
steamID64="76561198045469666" 
steamID64="76561198010892015" 
steamID64="76561198028438913" 
steamID64="76561197967117636" 
steamID64="76561197980283206" 
steamID64="76561197992198727" 
steamID64="76561198018960482" 
steamID64="76561198071675315" 
steamID64="76561198010447988" 
steamID64="76561198025628761"

如果您希望自定义,可以根据您的需求进行操作。如果需要更多帮助,请告诉我。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接