XML removeChild,但out输出有一个空行

Cra*_*igP 3 perl libxml2 xml-libxml

简单的removeChild测试,虽然删除了xml行,但它保持一个空的空行,怎么来的?顺便说一句 - 我的源xml文件确实有缩进,但即使我删除它们我得到相同的结果.那么,如果仍然保留一个空格,那么删除子行的意义何在?

有没有办法在将结果xml行输出到文件之前重新格式化?

foreach my $XYZ ($doc->findnodes("//EE1"))
{
 my $library = $XYZ->parentNode;
 $library->removeChild($XYZ);
} 
print {$FH} $doc->toString(0);



RESULT IN OUTPUT FILE:
<?xml version="1.0"?>
<TopTag>
  <AA1>ZNY</AA1>
  <AA2>111</AA2>
  <BB1>
    <CC1>ZNY</CC1>
    <CC2>
      <DD1>
                     <-----blank line remains
        <EE2>2000</EE2>
      </DD1>
      <DD1>
                     <-----blank line remains
        <EE2>5000</EE2>
      </DD1>
    </CC2>
  </BB1>
  <AA1>ZNY2</AA1>
  <AA2>2</AA2>
</TopTag>
Run Code Online (Sandbox Code Playgroud)

nwe*_*hof 5

空行来自包含空格的文本节点.请考虑以下文档:

<doc>
  <elem/>
</doc>
Run Code Online (Sandbox Code Playgroud)

doc元素包含以下节点:

  • 包含换行符和两个空格字符的文本节点.
  • 具有元素的元素节点elem.
  • 另一个包含换行符的文本节点.

如果elem删除元素,则仅保留文本节点,从而产生空行.

重新注册XML::LibXML文档的最简单方法是使用该模块XML::LibXML::PrettyPrint.还看看这个问题.