PHP SimpleXMLElement,将元素及其子元素作为XML

时间:2013-12-04 11:05:40

标签: php xml simplexml

假设我有以下XML:

<Book>
    <bookname>thename</bookname>
    <chapters>
        <chapter>
            <name>chapter1</name>
        </chapter>
         <chapter>
            <name>chapter2</name>
        </chapter>
    </chapters>
</Book>

如何获取XML如下:

    <chapters>
        <chapter>
            <name>chapter1</name>
        </chapter>
         <chapter>
            <name>chapter2</name>
        </chapter>
    </chapters>

一种方法是手动删除不需要的元素,例如

$resultXML = new SimpleXMLElement($inputXML);
unset($resultXML->bookname);
$resultXML = $resultXML->asXml();
echo format_result($resultXML,$format);

但如果我有一个包含许多不需要的注释的大型XML,这很乏味。知道谁使用其名称提取所需元素?

2 个答案:

答案 0 :(得分:0)

我们走了:

<?php

$inputXML ="
<Book>
    <bookname>thename</bookname>
    <chapters>
        <chapter>
            <name>chapter1</name>
        </chapter>
        <chapter>
            <name>chapter2</name>
        </chapter>
    </chapters>
</Book>
";

/* Load from file:
$parseXML = simplexml_load_file( $fileURL );
*/
$parseXML = simplexml_load_string( $inputXML );
$chapters = $parseXML->chapters->asXML();

echo $chapters;

?>

注意:您的xml必须格式正确,目前您的<Book>没有结束标记。

答案 1 :(得分:0)

XML的子节点本身就是SimpleXMLElements - 所以你也可以在它们上面调用axXml方法。

由于您的XML中只有一个chapters节点,只需

$resultXML->chapters->asXml()

会做的。