我有一个xml文件,我需要解析并获取值。下面是xml的snippit
<?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>
等获取所有子元素。
答案 0 :(得分:2)
这个怎么样:
$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节点执行了示例,但您可以非常轻松地为其他节点类型配置代码。
希望我能帮忙!
答案 1 :(得分:0)
你应该调查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
}
答案 2 :(得分:0)
$xml = new DOMDocument();
$xml->load('path_to_xml');
$htp = $xml->getElementsByTagName('hpt_mobile')[0];
$catalog = $htp->getElementsByTagName('CATALOG')[0]
$nodes = $catalog->getElementsByTagName('sA')->childNodes;