问题描述
||
我有一个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>
因此,我需要获取<sA>
的所有子元素,然后还有更多名为<sB>
的元素,等等
但是我不知道如何用<sA>
,<sB>
等获取所有子元素。
解决方法
这个怎么样:
$xmlstr = LoadTheXMLFromSomewhere();
$xml = new simplexml_load_string($xmlstr);
$result = $xml->xpath(\'//sA\');
foreach ($result as $node){
//do something with node
}
PHP确实有一个很好的类来访问XML,出于某种原因,该类称为SimpleXml,如果您的代码仅要访问XML的一部分(也可以查询xml),请考虑大量使用该类。另外,考虑使用XPath进行查询,这是最好的方法
注意,我仅使用sA节点进行了示例,但是您可以非常轻松地为其他节点类型配置代码。
希望我能帮忙!
, 您应该研究simplexml_load_string(),因为我敢肯定它会让您的生活变得更加轻松。它返回一个StdObject,您可以像这样使用它:
$xml = simplexml_load_string(<your huge xml string>);
foreach ($xml->hpt_mobile->CATALOG->sA as $value){
// do things with sA children
}
, $xml = new DOMDocument();
$xml->load(\'path_to_xml\');
$htp = $xml->getElementsByTagName(\'hpt_mobile\')[0];
$catalog = $htp->getElementsByTagName(\'CATALOG\')[0]
$nodes = $catalog->getElementsByTagName(\'sA\')->childNodes;