将 XPath 结果转换为字符串


Convert XPath result to string

我将按照此处所述将XML转换为JSON。我需要向该方法传递一个字符串,但我无法弄清楚如何将我的 XPath 结果转换为字符串。

我正在尝试从格式如下的XML文件中提取特定父元素[name=bar]的所有子元素:

    <items>
        <item name="foo">
            <element>1</element>
            <element>
                <child>c1</child>        
            </element>
            <element>2</element>
        </item>
        <item name="bar">
            <element>1</element>
            <element>
                <child>c1</child>        
            </element>
            <element>2</element>
        </item>
    </items>

可以访问我想要的节点:

    $xmlfile = simplexml_load_file('xmlfile.xml');
    $item = $productsXml->xpath('//item[@name="bar"]'); // Returns an array

我想将结果转换为字符串:

        <item name="bar">
            <element>1</element>
            <element>
                <child>c1</child>        
            </element>
            <element>2</element>
        </item>

任何帮助将不胜感激。

您可以循环访问 XPath 结果,然后使用 asXML() 将节点作为字符串保存到变量:

$str = ''; // initializing empty string to append to 
$item = $xmlfile->xpath('//item[@name="bar"]');
while(list(,$node) = each($item)) { // getting each node
    $str .= $node->asXML(); // save it to $str
}    
echo $str;

演示!