gpt4 book ai didi

python - 转储时如何删除ns0标签

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:09 24 4
gpt4 key购买 nike

我尝试使用 lxml iterparse 解析文件,因为实际文件会很大。我有以下代码:

import xml.etree.cElementTree as etree
filename = r'D:\test\Books.xml'
context = iter(etree.iterparse(filename, events=('start', 'end')))
_, root = next(context)
for event, elem in context:
if event == 'start' and elem.tag == '{http://www.book.org/Book-19200/biblography}Book':
print(etree.dump(elem))
root.clear()

我的 XML 看起来像这样:

<Books>
<Book xmlns="http://www.book.org/Book-19200/biblography"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ISBN="519292296"
xsi:schemaLocation="http://www.book.org/Book-19200/biblography ../../book.xsd
http://www.w3.org/2000/12/xmldsig# ../../xmldsig-core-schema.xsd">
<Detail ID="67">
<BookName>Code Complete 2</BookName>
<Author>Steve McConnell</Author>
<Pages>960</Pages>
<ISBN>0735619670</ISBN>
<BookName>Application Architecture Guide 2</BookName>
<Author>Microsoft Team</Author>
<Pages>496</Pages>
<ISBN>073562710X</ISBN>
</Detail>
</Book>
<Book xmlns="http://www.book.org/Book-19200/biblography"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ISBN="519292296"
xsi:schemaLocation="http://www.book.org/Book-19200/biblography ../../book.xsd
http://www.w3.org/2000/12/xmldsig# ../../xmldsig-core-schema.xsd">
<Detail ID="87">
<BookName>Rocking Python</BookName>
<Author>Guido Rossum</Author>
<Pages>960</Pages>
<ISBN>0735619690</ISBN>
<BookName>Python Rocks</BookName>
<Author>Microsoft Team</Author>
<Pages>496</Pages>
<ISBN>073562710X</ISBN>
</Detail>
</Book>
</Books>

运行上面的代码会生成如下内容:

<ns0:Book xmlns:ns0="http://www.book.org/Book-19200/biblography" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins
ance" ISBN="519292296" xsi:schemaLocation="http://www.book.org/Book-19200/biblography ../../book.xsd http:/
www.w3.org/2000/12/xmldsig# ../../xmldsig-core-schema.xsd">
<ns0:Detail ID="67">
<ns0:BookName>Code Complete 2</ns0:BookName>
<ns0:Author>Steve McConnell</ns0:Author>
<ns0:Pages>960</ns0:Pages>
<ns0:ISBN>0735619670</ns0:ISBN>
<ns0:BookName>Application Architecture Guide 2</ns0:BookName>
<ns0:Author>Microsoft Team</ns0:Author>
<ns0:Pages>496</ns0:Pages>
<ns0:ISBN>073562710X</ns0:ISBN>
</ns0:Detail>
</ns0:Book>

如何确保打印 xml 片段没有 ns0 前缀?我正在使用 Python 3。

最佳答案

添加

etree.register_namespace("", "http://www.book.org/Book-19200/biblography")

到你的程序。该函数注册一个命名空间前缀用于序列化(在本例中表示无前缀)。

引用:http://docs.python.org/3/library/xml.etree.elementtree.html#xml.etree.ElementTree.register_namespace

关于python - 转储时如何删除ns0标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22411131/

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