gpt4 book ai didi

python - 如何使用 xml 标签将元素打印为正确的 xml?

转载 作者:行者123 更新时间:2023-11-28 23:00:42 25 4
gpt4 key购买 nike

所以我认为有这个功能:

from django.http import HttpResponse
from xml.etree.ElementTree import Element, SubElement, Comment, tostring

def helloworld(request):
root_element = Element("root_element")
comment = Comment("Hello World!!!")
root_element.append(comment)
foo_element = Element("foo")
foo_element.text = "bar"
bar_element = Element("bar")
bar_element.text = "foo"
root_element.append(foo_element)
root_element.append(bar_element)
return HttpResponse(tostring(root_element), "application/xml")

它的作用是打印如下内容:

<root_element><!--Hello World!!!--><foo>bar</foo><bar>foo</bar></root_element>

如您所见,它缺少开头的 xml 标记。如何输出正确的以 xml 声明开头的 XML?

最佳答案

如果你可以在项目中添加依赖,我建议你使用lxml比 Python 自带的基本 xml 模块更加完善和优化。

为此,您只需将导入语句更改为:

from lxml.etree import Element, SubElement, Comment, tostring

然后,您将拥有一个带有“xml_declaration”选项的 tostring() :

>>> tostring(root, xml_declaration=False)
'<root_element><!--Hello World!!!--><foo>bar</foo><bar>foo</bar></root_element>'
>>> tostring(root, xml_declaration=True)
"<?xml version='1.0' encoding='ASCII'?>\n<root_element><!--Hello World!!!--><foo>bar</foo><bar>foo</bar></root_element>"

在标准库中,只有 ElementTree 的 write() 方法有 xml_declaration 选项。另一种解决方案是创建一个包装器,它使用 ElementTree.write() 写入 StringIO,然后返回 StringIO 的内容。

关于python - 如何使用 xml 标签将元素打印为正确的 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11762064/

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