使用Python解析不同格式的XML

时间:2012-01-12 22:37:04

标签: python xml-parsing

我正在编写一个python类来解析XML并提取标记名称及其值。到目前为止,我刚刚将XML 文件传递给我的类并使用ElementTree解析它。

我不可避免地希望能够将各种XML格式传递给类,因此不仅是文件,而且可能是XML字符串或来自URL的XML。

我不确定最好的方法是什么。我正在考虑编写一个单独的类或def来将所有XML信息转换为单个格式,例如字符串。然后设置我的解析类只是为了接受XML字符串进行解析。

如果有人建议如何最好地解决这个问题,那将会很棒,如何做到这一点会更好:)。

感谢。

2 个答案:

答案 0 :(得分:3)

使用LXML。它可以从字符串,文件或URL中解析XML,开箱即用。

from lxml import etree
from cStringIO import StringIO

xml = """<foo><bar/> baz!</foo>"""

# parse from string
etree.fromstring(xml)

# parse from file-like; in this case, StringIO
s = StringIO(xml)
etree.parse(s)

# parse from URL
etree.parse("http://example.com/somefile.xml")

答案 1 :(得分:3)

我不知道您为什么要通过构建自定义类来解析xml。它们是python中可用的许多xml解析器,如Beautiful Souplxml。您可以将xpath表达式或css表达式与lxml一起使用。

解析来自网址或文件的xml响应

import lxml
from lxml import etree
et = etree.parse(your xml file or your url)
value = et.xpath("xpath expression")
print value