使用PHP获取xml中的子元素

使用PHP获取xml中的子元素,php,xml,Php,Xml,我有一个xml文件需要解析并获取值。下面是一小段xml <?xml version="1.0"?> <mobile> <userInfo> </userInfo> <CATALOG> <s0> <SUB0> <DESCR>Paranormal Studies</DESCR> <SUBJECT>147<

我有一个xml文件需要解析并获取值。下面是一小段xml

    <?xml version="1.0"?>
<mobile>
  <userInfo>
  </userInfo>
  <CATALOG>
    <s0>
      <SUB0>
        <DESCR>Paranormal Studies</DESCR>
        <SUBJECT>147</SUBJECT>
      </SUB0>
    </s0>
    <sA>
      <SUB0>
        <DESCR>Accounting</DESCR>
        <SUBJECT>ACCT</SUBJECT>
      </SUB0>
      <SUB1>
        <DESCR>Accounting</DESCR>
        <SUBJECT>ACCTG</SUBJECT>
      </SUB1>
      <SUB2>
        <DESCR>Anatomy</DESCR>
        <SUBJECT>ANATOMY</SUBJECT>
      </SUB2>
      <SUB3>
        <DESCR>Anthropology</DESCR>
        <SUBJECT>ANTHRO</SUBJECT>
      </SUB3>
      <SUB4>
        <DESCR>Art</DESCR>
        <SUBJECT>ART</SUBJECT>
      </SUB4>
      <SUB5>
        <DESCR>Art History</DESCR>
        <SUBJECT>ARTHIST</SUBJECT>
      </SUB5>
    </sA> 

超自然研究
147
会计
会计科目
会计
ACCTG
解剖
解剖
人类学
炭疽
艺术
艺术
艺术史
亚瑟王
因此,我需要获取
的所有子元素,然后还有更多名为
的元素

但是我不知道如何使用
等获取所有子元素。

您应该研究一下,因为我很确定这会让您的生活轻松得多。它返回一个StdObject,您可以像这样使用它:

$xml = simplexml_load_string(<your huge xml string>);
foreach ($xml->hpt_mobile->CATALOG->sA as $value){
    // do things with sA children 
}
$xml=simplexml\u load\u string();
foreach($xml->hpt\u mobile->CATALOG->sA as$value){
//和孩子们一起做事
}
这个怎么样:

$xmlstr = LoadTheXMLFromSomewhere();

$xml = new simplexml_load_string($xmlstr);

$result = $xml->xpath('//sA');

foreach ($result as $node){
  //do something with node
}

PHP确实有一个很好的类来访问XML,这是有原因的,如果您的代码只访问XML的一部分(AQA查询XML),请考虑大量使用。此外,考虑使用查询,这是最好的方法

请注意,我只对sA节点进行了示例,但是您可以非常轻松地为其他节点类型配置代码

希望我能帮忙

我认为这是一个更好的选择。
$xml = new DOMDocument();
        $xml->load('path_to_xml');
$htp = $xml->getElementsByTagName('hpt_mobile')[0];
$catalog = $htp->getElementsByTagName('CATALOG')[0]
$nodes = $catalog->getElementsByTagName('sA')->childNodes;