2016-11-05 49 views
1

拥有一个xml文件,我可以如何获得有/没有属性的内容?例如有一些如:如何获取XML标记的innerHTML具有使用PHP的特定id属性?

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

给人以输入标记名bookid2,它应该返回所有这些里面,在这种情况下:

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

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

回答

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

相关问题