在PHP中,如何将XML文件解析为数组并检索具有特定属性的子级的所有子级?

在PHP中,如何将XML文件解析为数组并检索具有特定属性的子级的所有子级?,php,json,xml,simplexml,Php,Json,Xml,Simplexml,我的XML文件如下:agents.XML <?xml version="1.0" encoding="UTF-8"?> <agents> <agent id="1"> <aname>pi1</aname> <alive>0</alive> <scenarios>1,2,3</scenarios> </agent> <agent id="

我的XML文件如下:
agents.XML

<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <agent id="1">
    <aname>pi1</aname>
    <alive>0</alive>
    <scenarios>1,2,3</scenarios>
  </agent>
  <agent id="2">
    <aname>pi2</aname>
    <alive>1</alive>
    <scenarios>4,5,6</scenarios>
  </agent>
</agents> 
但我知道,如果XML是无序的,比如:

<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <agent id="2">
    <aname>pi2</aname>
    <alive>1</alive>
    <scenarios>4,5,6</scenarios>
  </agent>
  <agent id="1">
    <aname>pi1</aname>
    <alive>0</alive>
    <scenarios>1,2,3</scenarios>
  </agent>
</agents> 

pi2
1.
4,5,6
pi1
0
1,2,3
这不是很可靠

谢谢你的建议

试试看

$str = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <agent id="1">
    <aname>pi1</aname>
    <alive>0</alive>
    <scenarios>1,2,3</scenarios>
  </agent>
  <agent id="2">
    <aname>pi2</aname>
    <alive>1</alive>
    <scenarios>4,5,6</scenarios>
  </agent>
</agents> 
XML;

$xml = new SimpleXMLElement($str);
foreach($xml->agent as $agent)
{
    var_dump($agent);
    echo "<hr>";
}

$str=
$agents\u xml=simplexml\u load\u文件(“//agents.xml”);foreach($agents_xml->agent as$agent){if($agent['id']==id){print_r($agent);}}
成功了。谢谢@如果你觉得我的答案有用,请接受。
<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <agent id="2">
    <aname>pi2</aname>
    <alive>1</alive>
    <scenarios>4,5,6</scenarios>
  </agent>
  <agent id="1">
    <aname>pi1</aname>
    <alive>0</alive>
    <scenarios>1,2,3</scenarios>
  </agent>
</agents> 
$str = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<agents>
  <agent id="1">
    <aname>pi1</aname>
    <alive>0</alive>
    <scenarios>1,2,3</scenarios>
  </agent>
  <agent id="2">
    <aname>pi2</aname>
    <alive>1</alive>
    <scenarios>4,5,6</scenarios>
  </agent>
</agents> 
XML;

$xml = new SimpleXMLElement($str);
foreach($xml->agent as $agent)
{
    var_dump($agent);
    echo "<hr>";
}