拥有一个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>
将book
和id
标记为2
,它应该返回其中的所有内容,在这种情况下:
<title>...</title>
<author>...</author>
我已经解决了查找xml文件作为字符串并使用字符串的问题,但我想问一下可以使用xml文件做一些而不直接滚动所有内容。 实际上我有一个大的xml文件(东西为30-40 MB),只是想搜索其中的内容作为坐标标记名称和(如果存在)属性/ s。 文件的结构不是“常数”。
答案 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
中的结果