保持属性顺序的XML解析器-写入器
我需要解析一个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工具和库大多数情况下可能无法做到这一点。