首选Python XML处理器

问题描述

| 与Python搭配使用的首选XML处理器是什么? 一些选择是 极小 PyXML 元素树 ... 编辑:我将需要能够阅读文档并进行操作。我还需要漂亮的打印功能。     

解决方法

        lxml是它所在的位置。 这是一些示例代码:
import textwrap
from os.path import join

from lxml import etree

# string to Element
tree = etree.XML(textwrap.dedent(\'\'\'
  <foo_tag>
    foo text
    <bar_tag some_attr=\'ok\'>bar text</bar_tag>
  </foo_tag>
  \'\'\'))
print \'root text: \',tree.text
print \'pretty_print: \'
print etree.tostring(tree,pretty_print=True)
print \'last child: (%s) (%s)\' % (tree[-1].tag,tree[-1].text)
print

# filename to ElementTree
tree = etree.parse(\'some_file.xhtml\')

def recurse(root,depth):
  line = \'  \' * depth + root.tag + \' {%s}\' % \',\'.join(root.attrib.keys())
  if root.text:
    line += \' <%s>\' % root.text.strip()
  print line
  for child in root:
    recurse(child,depth + 1)
print \'recurse tree:\'
recurse(tree.getroot(),0)
print

print \'find title: \',tree.findtext(\'html/head/title\')
print \'find title again: \',tree.find(\'html\').find(\'head\').find(\'title\').text
这是ѭ1,可用于测试:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<root>
  <metadata/>
  <html>
    <head>
      <title style=\"bold\">Page Title</title>
      <span>Here\'s a <a href=\"google.com\">link</a> to somewhere.</span>
    </head>
    <body bgcolor=\"#ffffff\">Hello,World!</body>
  </html>
</root>
    ,        我可以担保ElementTree-它不是一个特别完整的XML实现。它的主要优势是DOM树对象的使用简单。它们的行为类似于常规的pythonic对象(序列和字典),即使其实际实现比外观可能暗示的要复杂一些。在所有XML框架中,ET都是可以用来快速完成基本任务的框架。 另一方面,如果您的XML大部分是传统的东西,那么它可以很好地读取和格式化您所投递的任何文档。 恼人的限制(四个月前似乎还没有修复)是它对XML名称空间的不可靠支持,缺少Xpath。 总而言之,它适合基本用途。它可以让您快速起步。 XML专家会发现它缺乏。     ,        我是BeautifulSoup的忠实粉丝...我发现它是最容易使用的解析器!     ,        如果您只是解析文档而不是对其进行操作。我建议为Python使用SAX Parser http://docs.python.org/library/xml.sax.reader.html