如何使用php获得XML标签的innerHTML具有特定的id属性


How to get innerHTML of XML tag has specific id attribute using php?

有一个xml文件,我怎么能得到内容与/没有属性?例如:

<book id="1">
  <title>...</title>
  <author>...</author>
</book>
<book id="2">
  <title>...</title>
  <author>...</author>
</book>
<book id="3">
  <title>...</title>
  <author>...</author>
</book>

给定输入tagname为book, id2,它应该返回其中的所有内容,在这种情况下:

<title>...</title>
<author>...</author>

我已经解决了将xml文件视为字符串并使用字符串的问题,但我想问是否可以使用xml文件直接滚动所有内容。实际上,我有一个大的xml文件(大约30-40 MB),只是想在其中搜索一个内容,给出坐标标签名称和(如果存在)属性。文件not的结构是一个"常量"

DOMXPath::queryXPath对所选元素进行过滤的好方法。您可以选择具有特定属性的元素。代码发现book标签的id属性值为2

$dom = new DOMDocument;
$dom->loadXML($str);
$xpath = new DOMXPath($dom);
$book = $xpath->query("//book[@id='2']")->item(0);
foreach($book->childNodes as $node) {
   @$html .= $dom->saveHTML($node);
}
echo $html;

注意,代码的最后一部分循环遍历所选元素的子元素以获取它们的html。

检查demo的结果