gpt4 book ai didi

Python - 打印漂亮的 XML 为空标签文本创建开始和结束标签

转载 作者:行者123 更新时间:2023-11-30 23:36:01 26 4
gpt4 key购买 nike

我正在编写一个 python 应用程序,它创建一个 ElementTree (XML),然后使用 minidom 的 toprettyxml() 将其写入文件;

final_tree = minidom.parseString(ET.tostring(root))
fdout.write(final_tree.toprettyxml(indent = ' ')

问题是,我没有附加任何文本的标签只有一个标签,例如:

<sometag/>

我希望它是:

<sometag>
</sometag>

我想在不解析整个字符串的情况下执行此操作(没有正则表达式)。有人熟悉这种方式吗?谢谢。

最佳答案

该行为是在 minidom.py 中硬连接的(查看 class Element 中的 writexml() 方法)。它并不意味着要更改,但对于当前实现,您可以像这样对其进行猴子修补:

from xml.dom import minidom

t = minidom.parseString('<a><b></b></a>')

def patcher(method):
def patching(self, *args, **kwargs):
old = self.childNodes
try:
if not self.childNodes:
class Dummy(list):
def __nonzero__(self): # Python2
return True
def __bool__(self): # Python3
return True
old, self.childNodes = self.childNodes, Dummy([])
return method(self, *args, **kwargs)
finally:
self.childNodes = old
return patching

t.firstChild.__class__.writexml = patcher(t.firstChild.__class__.writexml)

print t.toprettyxml()

但是我当然不推荐这样的黑客。

关于Python - 打印漂亮的 XML 为空标签文本创建开始和结束标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com