当前位置:  开发笔记 > 编程语言 > 正文

Python xml minidom.生成<text>一些文本</ text>元素

如何解决《Pythonxmlminidom.生成<text>一些文本</text>元素》经验,为你挑选了1个好方法。

我有以下代码.

from xml.dom.minidom import Document

doc = Document()

root = doc.createElement('root')
doc.appendChild(root)
main = doc.createElement('Text')
root.appendChild(main)

text = doc.createTextNode('Some text here')
main.appendChild(text)

print doc.toprettyxml(indent='\t')

结果是:



    
        Some text here
    

这一切都很好,但是如果我希望输出看起来像这样呢?



    Some text here

这可以轻松完成吗?

Orjanp ...



1> bobince..:

这可以轻松完成吗?

这取决于你想要的确切规则,但通常不会,你几乎无法控制漂亮的打印.如果你想要一种特定的格式,你通常需要编写自己的助行器.

pxdom中的DOM Level 3 LS参数格式 - 漂亮打印非常接近您的示例.它的规则是,如果一个元素只包含一个TextNode,则不会添加额外的空格.然而,它(当前)使用两个空格来缩进而不是四个.

>>> doc= pxdom.parseString('c')
>>> doc.domConfig.setParameter('format-pretty-print', True)
>>> print doc.pxdomContent


  c

(调整您正在进行的任何类型的序列化的编码和输出格式.)

如果这是你想要的规则,并且你可以逃脱它,你也可能能够修补minidom的Element.writexml,例如:

>>> from xml.dom import minidom
>>> def newwritexml(self, writer, indent= '', addindent= '', newl= ''):
...     if len(self.childNodes)==1 and self.firstChild.nodeType==3:
...         writer.write(indent)
...         self.oldwritexml(writer) # cancel extra whitespace
...         writer.write(newl)
...     else:
...         self.oldwritexml(writer, indent, addindent, newl)
... 
>>> minidom.Element.oldwritexml= minidom.Element.writexml
>>> minidom.Element.writexml= newwritexml

所有关于猴子修补的不良的常见警告都适用.

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有