Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于XML的php-xpath_Php_Xml_Xpath - Fatal编程技术网

基于XML的php-xpath

基于XML的php-xpath,php,xml,xpath,Php,Xml,Xpath,我怎样才能做到这一点: <root> <gallery name="First"> <picture active="1" detail="not shown"/> <picture active="1" detail="not shown"/> <picture active="0" detail="not shown"/> </gallery> <gallery name="Second"> <

我怎样才能做到这一点:

<root>
<gallery name="First">
 <picture active="1" detail="not shown"/>
 <picture active="1" detail="not shown"/>
 <picture active="0" detail="not shown"/>
</gallery>
<gallery name="Second">
 <picture active="0" detail="not shown"/>
 <picture active="1" detail="SHOW THIS ONE"/>
 <picture active="1" detail="AND SHOW THIS ONE" />
</gallery>
</root>
如何更改它以获得所需的输出?
谢谢,安迪,你的XPath错了。任用

/root/gallery[@name="Second"]/picture[@active=1]
仅从根节点匹配此节点星座,或

//gallery[@name="Second"]/picture[@active=1]
在文档中的任何位置匹配此节点星座(较慢)

完整的工作示例:

$dom = new DOMDocument;
$dom->load('NewFile.xml'); // containing your XML
$xp = new DOMXPath($dom);
$pictures = $xp->query('/root/gallery[@name="Second"]/picture[@active=1]');
foreach ($pictures as $picture) {
    echo $dom->saveXml($picture), PHP_EOL;
}
给予

给予


您的XPath是错误的。任用

/root/gallery[@name="Second"]/picture[@active=1]
仅从根节点匹配此节点星座,或

//gallery[@name="Second"]/picture[@active=1]
在文档中的任何位置匹配此节点星座(较慢)

完整的工作示例:

$dom = new DOMDocument;
$dom->load('NewFile.xml'); // containing your XML
$xp = new DOMXPath($dom);
$pictures = $xp->query('/root/gallery[@name="Second"]/picture[@active=1]');
foreach ($pictures as $picture) {
    echo $dom->saveXml($picture), PHP_EOL;
}
给予

给予


为什么您在上一个问题中从DOM改为SimpleXml?我使用DOM添加和删除节点,因为我读到它比使用SimpleXml容易得多,我使用SimpleXML来显示和编辑XML。为什么您在上一个问题中从DOM改为SimpleXML?我使用DOM来添加和删除节点,因为我了解到这比使用SimpleXML容易得多,我使用SimpleXML来显示和编辑XML。它们不适合我,允许您在xpath中查询多个内容吗?@andy请参阅更新。“不要为我工作”不是正确的错误描述。请澄清你的问题。对不起,我周五没有时间好好检查。现在,我刚刚又看了一眼,意识到我已经更改了XML文件,这就是它无法工作的原因。xpath的东西一直都很好!!谢谢你的帮助,他们不为我工作,你可以在xpath中查询多个内容吗?@andy see update。“不要为我工作”不是正确的错误描述。请澄清你的问题。对不起,我周五没有时间好好检查。现在,我刚刚又看了一眼,意识到我已经更改了XML文件,这就是它无法工作的原因。xpath的东西一直都很好!!谢谢你的帮助,安迪
SHOW THIS ONE 
AND SHOW THIS ONE