2010-03-24 132 views
1

我从简单的XML文件中删除了一些元素。删除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> 

我不知道如何还可以删除空行是我运行删除代码后离开了吗?

的感谢!

+0

您可以删除这些空白,但是您可能不会收到很好的缩进(已标准化)的XML。你可能会在同一行上结束'。 – 2013-06-17 08:45:47

回答

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']]" 
); 
0

以防万一你想删除全部这些空白为您的输出,有一个简单的方法如下:

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