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

时间:2016-11-05 18:01:17

标签: php xml dom xpath attributes

拥有一个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>

bookid标记为2,它应该返回其中的所有内容,在这种情况下:

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

我已经解决了查找xml文件作为字符串并使用字符串的问题,但我想问一下可以使用xml文件做一些而不直接滚动所有内容。 实际上我有一个大的xml文件(东西为30-40 MB),只是想搜索其中的内容作为坐标标记名称和(如果存在)属性/ s。 文件的结构不是“常数”。

1 个答案:

答案 0 :(得分:1)

DOMXPath::query是按XPath过滤所选元素的好方法。您可以选择具有特定属性的元素。代码查找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

中的结果