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

在PHP中从xpath查询返回原始XML?,php,xml,xpath,Php,Xml,Xpath,我希望使用xpath并从PHP中的文件中提取原始XML,但我不希望将结果解析为数组。我只是尝试从原始文档返回一个子集 我的原始文档的结构如下: <?xml version="1.0" encoding="utf-8"?> <root> <row id="1"> <child1>value1</child1> <child2>value1</child2> &

我希望使用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>

价值1
价值1
价值1
价值1
价值1
价值1
我所要做的就是能够将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>

价值1
价值1
价值1
最好的办法是什么

$doc=newDOMDocument();
$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";
    }
 }
$doc->loadXML(“…”);//或$doc->load($file)(如果从文件加载) $xpath=新的DOMXpath($doc); $elements=$xpath->query(“/root/row[@id='1']”); 如果($要素){ foreach($item形式的元素){ echo$doc->saveXML($item),“\n”; } }

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

试着放一个这样的标题

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

您正在寻找simplexmlThis返回整个原始文档,而不是XPATH的结果。这是一个很好的起点,但您需要从原始文档生成另一个XML文件。不,您只需要将节点作为参数传递:
$doc->saveXML($elements->item(0))是的,这正是我要找的,谢谢!我所缺少的只是$elements->item(0)。