Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除XML元素后删除空白行?_Php_Xml_Dom_Simpledom - Fatal编程技术网

Php 删除XML元素后删除空白行?

Php 删除XML元素后删除空白行?,php,xml,dom,simpledom,Php,Xml,Dom,Simpledom,我使用simpledom从xml文件中删除了一些元素 守则: $this->xmlDocument->removeNodes("//entity[name='mac']"); 以下是初始文件: <entity id="1000070"> <name>apple</name> <type>category</type> <entities> <entity id="7

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

苹果
类别
雨衣
类别
苹果手机
类别
ipad
类别
该文件随后:

<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>

苹果
类别
苹果手机
类别
ipad
类别
我想知道怎样才能删除运行删除代码后留下的空白行?


谢谢

可以使用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']]"
);

如果您想删除输出中的所有空格,下面有一个简单的方法:

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

您可以删除空格,但最终可能不会得到缩进(美化)良好的XML。您可能会在同一行中出现