有一个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
, id
为2
,它应该返回其中的所有内容,在这种情况下:
<title>...</title>
<author>...</author>
我已经解决了将xml文件视为字符串并使用字符串的问题,但我想问是否可以使用xml文件直接滚动所有内容。实际上,我有一个大的xml文件(大约30-40 MB),只是想在其中搜索一个内容,给出坐标标签名称和(如果存在)属性。文件not的结构是一个"常量"
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的结果