为什么python中的元素树在XML中添加额外的新行和空格

吉达尼

我如何从例如更改我的xml的外观

 <root>
     <elem1>
         <value>
            122
         </value>
         <text>
            This_is_just_a_text
         </text>
     </elem1>
     <elem1>
         <value>
            122
         </value>
         <text>
            This_is_just_a_text
         </text>
     </elem1>   
 </root>

看起来像:

 <root>
     <elem1>
         <value>122</value>
         <text>This_is_just_a_text</text>
     </elem1>
     <elem1>
         <value>122</value>
         <text>This_is_just_a_text</text>
     </elem1>   
 </root>

我只是想知道是什么原因导致的?顺便说一下,下面的方法/函数用于添加缩进!

 def prettify(elem):
     """
         Return a pretty-printed XML string for the Element.
     """
     rough_string = ET.tostring(elem, 'utf-8')
     reparsed = minidom.parseString(rough_string)
     return reparsed.toprettyxml(indent="\t")
吉达尼

我正在为只有一天有同样问题的人写这个答案。

在这里我发现了!在python2.7.3之前,所有python版本的内置方法toprettyxml()中实际上都存在一个错误,该错误导致xml输出中添加了多余的空格和新行。因此,如果您使用的是python 2.7.3或更高版本,则可以使用问题中提供的prettify()方法,并且不会看到任何多余的行或空格,但是如果您使用的是旧版本,则可以通过以下方法进行修复使用“正则表达式”:

 def prettify(elem):
     """
         Return a pretty-printed XML string for the Element.
     """
     rough_string = ET.tostring(elem, 'utf-8')
     reparsed = minidom.parseString(rough_string)
     uglyXml = reparsed.toprettyxml(indent="\t")
     pattern = re.compile('>\n\s+([^<>\s].*?)\n\s+</', re.DOTALL)
     return pattern.sub('>\g<1></', uglyXml) 

用Python漂亮地打印XML

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Intellij在新块中添加额外的行

为什么在删除一个空格时在 XML 的末尾添加一个新行

为什么在“ 7.1迭代,过滤和转换”课程中的Rubymonk中添加额外的语句

从文本文件中读取字符同时忽略新行中的额外空格的最佳方法是什么?

Python从XML树中删除重复的元素

删除 ArrayList 中的空格和新行

为什么我在向图像视图添加图层时在 CAShapeLayer 中得到额外的行

在现有数组中添加额外的元素和值

为什么td在表中添加了额外的填充?

为什么在使用merge-sort时将额外的元素添加到我的void **数组中?

如何在忽略空格和新行的同时在 python 中读取行。Python

在列表的元素中添加空格

full_join 在 r 中添加额外的行和 NA

为什么在包含行内元素的块容器的行高中添加了额外的 2px?

为什么List <T> .Add和List <T> .Remove将元素复制到新数组中,而不是实际添加和删除?

当我只需要向用户添加行时,为什么在nlist中记录额外的项目/行('')?

为什么 Prolog 谓词 member/2 在输出中打印额外的空格?

为什么ECHO命令在文件中打印一些额外的尾随空格?

为什么Python中的共享价值会创建额外的流程

为什么要在Python中获得额外的条形图?

在LaTeX中添加新行和新段落的最佳方法是什么?

在 pyspark 中添加新的列和行

使用元素树从python中的文件读取XML数据

为什么ksh中的“[[”和“-e xxx”之间需要空格?

为什么在新行的开头留有空格后打印元素?

在字符串中,新行和空格变为 =""

从数组中删除空格、制表符和新行

为什么在写入新的Cassandra表之前和之后,Spark DataFrames中的元素数量不同?

为什么顺序TABLE元素显示在浏览器的新行中?