将XPath结果转换为字符串

时间:2013-10-15 09:59:52

标签: php xpath simplexml

我将按照here所述将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>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以遍历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;

Demo!