php计数xml元素 [英] php count xml elements
问题描述
您好,计算XML文件中元素数量的最佳方法是什么?就我而言,我想计算标签"OfferNameList"中名称为"OfferName"的XML标签的数量.
Hi what is the best way to count the number of elements in a XML file? In my case I want to count the number of XML tags with the name "OfferName" within the tag "OfferNameList".
下面的XML包含在php变量$ offers
The XML below is contained in a php variable $offers
$offers = '<OfferNameList>
<OfferName>...</OfferName>
<OfferName>...</OfferName>
<OfferName>...</OfferName>
...
</OfferNameList>';
感谢您的帮助
推荐答案
使用 DOM
您可以使用
With DOM
you can either use
$dom->getElementsByTagName('OfferName')->length;
仅计算 所有OfferName元素 . length
是DOMNodeList
的属性.
to count all OfferName elements only. length
is an attribute of DOMNodeList
.
要计算OfferNameList 中的所有 所有OfferName元素,可以使用
To count all OfferName elements within an OfferNameList, you can use DOMXPath::evaluate
$xpath->evaluate('count(//OfferNameList/OfferName');
请注意,此处的 有点不准确,因为XPath查询将仅考虑直接子级.如果您需要在OfferNameList元素下方的任何地方提供OfferName元素,请调整您的问题.
Note that within is somewhat inaccurate here as the XPath query will only consider direct children. Please adjust your question if you need OfferName elements anywhere below a OfferNameList element.
还请注意,//
将查询文档中的任何位置,这对于大型文档而言可能效率较低.如果您知道OfferNameList元素仅出现在XML中的某个位置,请使用直接路径.
Also note that //
will query anywhere in the document, which might be less efficient for large documents. If you know OfferNameList elements occur at a certain position in your XML only, use a direct path.
完整的示例(在键盘上运行):
$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元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!