您好,计算 XML 文件中元素数量的最佳方法是什么?在我的例子中,我想计算标签“OfferNameList”中名称为“OfferName”的 XML 标签的数量。
下面的 XML 包含在一个 php 变量 $offers 中
$offers = '<OfferNameList>
<OfferName>...</OfferName>
<OfferName>...</OfferName>
<OfferName>...</OfferName>
...
</OfferNameList>';
感谢帮助
最佳答案
与 DOM
你可以使用
$dom->getElementsByTagName('OfferName')->length;
计算仅所有 OfferName 元素。 length
is an attribute of DOMNodeList
.
要统计 OfferNameList 中的所有 OfferName 元素,您可以使用 DOMXPath::evaluate
$xpath->evaluate('count(//OfferNameList/OfferName');
请注意,within 在这里有些不准确,因为 XPath 查询将只考虑直接子项。如果您在 OfferNameList 元素下方的任何位置需要 OfferName 元素,请调整您的问题。
另请注意,//
将查询文档中的任何位置,这对于大型文档可能效率较低。如果您知道 OfferNameList 元素仅出现在 XML 中的特定位置,请使用直接路径。
完整的工作示例 ( run on codepad ):
$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
关于php 计算 xml 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4386465/