xml缩进和新子的换行符

我有一个看起来像下面的xml文件。

      

我希望使用函数xmlNewChild()后跟xmlNewProp()将一个名为foo的新子节点添加到节点。 我想生成如下的内容。

        

但是,我总是最终得到以下结论。

       

我明白libxml2默认不支持空格。 但是,有没有办法达到我想要的结果? 我需要在新添加的孩子的前面和新行中添加这些标签。

任何帮助,将不胜感激。 谢谢!

问题是XML结构实际上是这样的:

  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n"]  

如果您只是在子项末尾添加一个额外的元素节点,您可以看到您获得的是不可避免的(因为没有文本节点来携带换行符以及foo3children节点之间所需的缩进)。

您需要编辑子项中的最终文本节点(紧跟在foo2之后的那个)以给它一个额外的缩进,然后追加新节点,然后附加一个新的文本节点以缩进 。 或者,您可以在子项中插入与先前文本节点相同的文本节点,然后在children的最终文本节点之前插入新元素节点。 两者都应该给你相同的结果,你需要的结果:

  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n "]  [TEXT:"\n"]  

另一种方法是让libxml2自动为您输出输出。 这将破坏现有的缩进并从头开始重做。 这是一个相关的答案。