嗨,什么是计算XML文件中元素数量的最佳方法?就我而言,我想计算标签“ OfferNameList”中名称为“ OfferName”的XML标签的数量。
下面的XML包含在php变量$ offers中
$offers = '<OfferNameList> <OfferName>...</OfferName> <OfferName>...</OfferName> <OfferName>...</OfferName> ... </OfferNameList>';
谢谢您的帮助
与DOM您可以使用
DOM
$dom->getElementsByTagName('OfferName')->length;
仅 计算 所有OfferName元素 。length是的属性DOMNodeList。
length
DOMNodeList
要计算 OfferNameList中的所有OfferName元素 ,可以使用DOMXPath::evaluate
DOMXPath::evaluate
$xpath->evaluate('count(//OfferNameList/OfferName');
请注意,由于XPath查询将仅考虑直接子级,因此in 内 有些不准确。如果您在OfferNameList元素下方的任何地方都需要OfferName元素,请调整您的问题。
另请注意,这//将查询文档中的任何位置,这对于大型文档而言可能效率较低。如果您知道OfferNameList元素仅出现在XML中的某个位置,请使用直接路径。
//
完整的工作示例 (在键盘上运行):
$xml = <<< XML <root> <NotOfferNameList> <OfferName>...</OfferName> <OfferName>...</OfferName> <OfferName>...</OfferName> </NotOfferNameList> <OfferNameList> <OfferName>...</OfferName> <OfferName>...</OfferName> <OfferName>...</OfferName> </OfferNameList>; </root> XML; $dom = new DOMDocument; $dom->loadXml($xml); // count all OfferName elements echo $dom->getElementsByTagName('OfferName')->length, PHP_EOL; // 6 // count all OfferNameList/OfferName elements $xp = new DOMXPath($dom); echo $xp->evaluate('count(//OfferNameList/OfferName)'); // 3