从PHP中的xpath查询返回原始XML?

时间:2013-03-11 16:06:39

标签: php xml xpath

我正在寻找xpath并从PHP中的文件中提取原始XML,但我不打算将结果解析为数组。我只是想从原始文档中返回一个子集。

我的原始文档结构如下:

<?xml version="1.0" encoding="utf-8"?>
<root>
    <row id="1">
        <child1>value1</child1>
        <child2>value1</child2>
        <child3>value1</child3>
    </row>
    <row id="2">
        <child1>value1</child1>
        <child2>value1</child2>
        <child3>value1</child3>
    </row>
</root>

我想做的就是能够xpath进入/ root / row [@ id =“1”]并返回:

<?xml version="1.0" encoding="utf-8"?>
<row id="1">
    <child1>value1</child1>
    <child2>value1</child2>
    <child3>value1</child3>
</row>

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

$doc = new DOMDocument();
$doc->loadXML('<root>...</root>'); // or $doc->load($file) if loading from file
$xpath = new DOMXpath($doc);
$elements = $xpath->query("/root/row[@id='1']");
if ($elements) {
    foreach ($elements as $item) {
        echo $doc->saveXML($item), "\n";
    }
 }

感谢@ fab的评论。我忘记了that

答案 1 :(得分:0)

尝试放置这样的标题,

header('Content-Type: application/xml; charset=UTF-8');