php 计算 xml 元素

标签 php xml

您好,计算 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/

相关文章:

php - 如何在 Symfony2 中抛出 403 异常?

php - Symfony 的最佳分步教程 -(我在 Windows 上运行 PHP)

java - 在Android Studio中使用Volley下载文件

ruby-on-rails - 逐行搜索 XML

php - 显示数据库中的图表数据

php - 根据条件(desc 或 asc)在 MySQL 查询后添加逗号

php - 基于用户角色的 Laravel voyager 策略

java - Android 证书签名和应用程序名称

xml - 将 xml/CDATA 嵌套到 xml 文件中?

android - 如何从另一个 Intent 中获取信息?