XML解析

../_images/33888714601_a1f7d020a2_k_d.jpg

untangle

untangle 库可以将XML文档映射为一个Python对象,该对象于其结构中包含了原文档的节点与属性信息。

作为例子,一个像这样的XML文件:

  1. <?xml version="1.0"?>
  2. <root>
  3. <child name="child1">
  4. </root>

可以被这样载入:

  1. import untangle
  2. obj = untangle.parse('path/to/file.xml')

然后您可以像这样获取child元素名称:

  1. obj.root.child['name']

untangle也支持从字符串或URL中载入XML。

xmltodict

xmltodict 是另一个简易的库,它致力于将XML变得像JSON。

对于一个像这样的XML文件:

  1. <mydocument has="an attribute">
  2. <and>
  3. <many>elements</many>
  4. <many>more elements</many>
  5. </and>
  6. <plus a="complex">
  7. element as well
  8. </plus>
  9. </mydocument>

可以装载进一个Python字典里,像这样:

  1. import xmltodict
  2.  
  3. with open('path/to/file.xml') as fd:
  4. doc = xmltodict.parse(fd.read())

您可以访问元素,属性以及值,像这样:

  1. doc['mydocument']['@has'] # == u'an attribute'
  2. doc['mydocument']['and']['many'] # == [u'elements', u'more elements']
  3. doc['mydocument']['plus']['@a'] # == u'complex'
  4. doc['mydocument']['plus']['#text'] # == u'element as well'

xmltodict 也有unparse函数让您可以转回XML。该函数有一个streaming模式适合用来处理不能放入内存的文件,它还支持命名空间。

原文: http://pythonguidecn.readthedocs.io/zh/latest/scenarios/xml.html