php - 您如何计算 XML 文件中的两个节点在一个元素中出现的次数?
问题描述
假设我有几个人的 XML 文件和他们写的书,如下所示:
<person name="Margret Jane" id="mj">
<book>
<author id="mj"> Margret Jane </author>
<author id="js"> Sarah Jane </author>
<author id="ms"> Michael Scott </author>
</book>
<book>
<author id="mj"> Margret Jane </author>
<author id="fr"> Freya Rob </author>
<author id="ms"> Michael Scott </author>
</book>
等等等等
我怎么能数出玛格丽特和迈克尔是合著者的次数。
我用过这个:
$getMargret = new DOMDocument();
$getMargret->load("Margret.xml");
$counter= $getMargret->getElementsByTagName("person")[0]->getElementsByTagName('book')->length;
print_r($counter);
为了获得玛格丽特自己创作的书籍总数,但我不确定如何计算共同作者的实例。
解决方案
一种选择是对两个名称都使用DOMXpath检查:
/person/book[author = ' Margret Jane ' and author = ' Michael Scott ']
代码示例
$getMargret = new DOMDocument();
$getMargret->load("Margret.xml");
$xpath = new DOMXpath($getMargret);
$counter= $xpath->query("/person/book[author = ' Margret Jane ' and author = ' Michael Scott ']")->length;
echo $counter;
输出
2
看一个PHP 演示
推荐阅读
- java - 为什么在 Spring MVC 测试中处理 Resource 时会忽略 content().bytes() 的结果?
- c++ - 为什么 Z3 BitVec 对象没有运行时大小信息?
- linux - 是否有另一种方法来识别与 rpm 规范文件中的 rpm 命令一起使用的参数或参数
- android - 如何识别设备是否支持显示屏生物识别指纹?
- javascript - 画布似乎可以工作,但当我在上面画画时不显示
- sql-server - 在 sql server 2012 中加入 3 个表给了我重复的记录
- excel - 不允许使用 Intersect 方法的空单元格
- arduino - 是否有工具或方法可以在不直接使用 arduino IDE 的情况下上传 arduino 草图?
- python - 如何通过 boto3 获取 AWS 的配额?
- python-3.x - 如何在 Python 中使用自定义名称创建 NamedTemporaryFile?