删除xml元素后删除空白行?

时间:2010-03-24 18:41:35

标签: php xml dom simpledom

我使用simpledom从xml文件中删除了一些元素。

代码:

$this->xmlDocument->removeNodes("//entity[name='mac']");

这是初始文件:

<entity id="1000070">
    <name>apple</name>
    <type>category</type>
    <entities>
        <entity id="7002870">
            <name>mac</name>
            <type>category</type>
        </entity>
        <entity id="7024080">
            <name>iphone</name>
            <type>category</type>
        </entity>
        <entity id="7024080">
            <name>ipad</name>
            <type>category</type>
        </entity>
    </entities>
</entity>
之后

文件:

<entity id="1000070">
    <name>apple</name>
    <type>category</type>
    <entities>




        <entity id="7024080">
            <name>iphone</name>
            <type>category</type>
        </entity>
        <entity id="7024080">
            <name>ipad</name>
            <type>category</type>
        </entity>
    </entities>
</entity>

我想知道如何删除运行删除代码后留下的空白行?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用XPath定位空白文本节点。

如果您要删除的节点是//entity[name='mac'],那么之前的空白文本节点将是

//text()[normalize-space(.) = ''][following-sibling::entity[position()=1][name='mac']]

然后,您可以使用|运算符删除两个节点集,并且您的命令变为:

$this->xmlDocument->removeNodes(
    "//entity[name='mac'] | //text()[normalize-space(.) = ''][following-sibling::entity[position()=1][name='mac']]"
);

答案 1 :(得分:0)

如果您想要为输出删除所有这些空格,以下是一种简单的方法:

$this->xmlDocument->removeNodes(
    "//entity[name='mac'] | //text()[normalize-space(.) = '']"
);