python解析XML文本

python parse xml text

本问题已经有最佳答案,请猛点这里访问。

我想用python解析XML,但它是一个字符串,不是从文件中提取的。有人能帮我吗?


从文件中,您通常可以

1
2
from xml.dom import minidom                                          
xmldoc = minidom.parse('~/diveintopython/common/py/kgp/binary.xml')

对于字符串,可以将其更改为

1
2
from xml.dom import minidom                                          
xmldoc = minidom.parseString( Your string goes here )


你可以用:xml.dom.minidom.parseString(text)

This method creates a StringIO object for the string and passes that on to parse().

您还可以对任何其他需要类似文件的对象的XML解析器使用Stringio的相同技术。

1
2
import StringIO
your_favourite_xml_parser.parse(StringIO.StringIO('<xml>...</xml>'))


您也可以使用(xml.etree.CelementTree)。

1
2
3
4
5
6
7
8
9
10
11
import xml.etree.cElementTree as ET

aElement = ET.fromstring('<Root id="UUID_1"><Item id="id_Item" /></Root>')

See Python help document
Each element has a number of properties associated with it:
  a tag which is a string identifying what kind of data this element represents (the element type, in other words).
  a number of attributes, stored in a Python dictionary.
  a text string.
  an optional tail string.
  a number of child elements, stored in a Python sequence

也可以使用lxml。我的初创公司(http://dealeites.com)每天都要进行大量的XML处理。我已经尝试过用Python提供的几乎所有XML库。LXML是可用于XML处理的最佳库。

你也可以尝尝美味的汤。它非常适合于HTML解析,但是是LXML的一个很好的替代方案。

LXML示例:

1
2
3
from lxml import etree;

parsedfeed = etree.xml('your xml here');

靓汤示例:

1
2
3
from BeautifulSoup import BeautifulStoneSoup;

soup = BeautifulStoneSoup('your xml here');