保持属性顺序的XML解析器-写入器

3 投票
2 回答
2096 浏览
提问于 2025-04-16 05:57

我需要解析一个XML文档,然后把每个节点写到单独的文件里,同时保持属性的顺序不变。比如,如果我有这样的输入文件:

<item a="a" b="b" c="c"/>
<item a="a1" b="b2" c="c3"/>

输出应该是两个文件,每个文件里都有每个项目。现在如果使用xml.dom.minidom的话,输出的属性顺序会被改变(我得到的结果是 - <item b="b" c="c" **a="a"**/>

我发现了pxdom这个库,它能保持属性的顺序,但速度非常慢(minidom解析需要0.08秒,而pxdom解析需要2.5秒)。

有没有其他的Python库可以保持属性的顺序呢?

更新:这个库还应该保持大小写的区别。所以“Item”和“item”是不同的。

2 个回答

0

你可以使用BeautifulSoup这个工具:

>>> from BeautifulSoup import BeautifulSoup as soup

>>> html = '''<item a="a" b="b" c="c"/>
<item a="a1" b="b2" c="c3"/>'''
>>> s = soup(html)
>>> s.findAll('item')
[<item a="a" b="b" c="c"></item>, <item a="a1" b="b2" c="c3"></item>]
1

你可能会觉得这个问题很有用。简单来说,结论是:标准的XML工具和库大多数情况下可能无法做到这一点。

撰写回答