我知道可能是重复但不起作用....
我有这个xml
<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2">
<Document>
<name>EMSC - Last 2 Weeks earthquakes worldwide</name>
<Folder>
<name>2017 7 - 13</name>
</Folder>
<Folder>
<name>2017 7 - 12</name>
</Folder>
</Document>
</kml>
我想要计数节点Folder
,我把它绑起来
$pars_emsc= simplexml_load_file('/file');
$count_folder_emsc= $pars_emsc-> Document -> getElementsByTagName('Folder')->length;
但不起作用......
答案 0 :(得分:2)
您不能将简单的XML解析器用作DOM文档。很简单getElementsByTagName
在SimpleXML
中不存在。请改用:
$pars_emsc = new DOMDocument( "1.0", "ISO-8859-15" );
$pars_emsc->load("/file");
$count_folder_emsc= $pars_emsc->getElementsByTagName("Document")[0]->getElementsByTagName('Folder')->length;
print_r($count_folder_emsc);
或者只做:
$pars_emsc= simplexml_load_file("/file");
$count_folder_emsc= $pars_emsc-> Document -> Folder -> count();
答案 1 :(得分:0)
Xpath表达式也可以计算节点。
$document = new DOMDocument();
$document->loadXml($xml);
$xpath = new DOMXpath($document);
$xpath->registerNamespace('kml', 'http://www.opengis.net/kml/2.2');
var_dump($xpath->evaluate('count(//kml:Folder)'));
输出:
float(2)
您使用默认命名空间,因此必须为其注册前缀。