与Python一起使用的首选XML处理器是什么?
有些选择是
编辑:我需要能够阅读和操作文档。我还需要漂亮的打印功能。
发布于 2011-06-21 23:14:42
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下面是可以用于测试的some_file.xhtml:
<?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>发布于 2011-06-21 23:17:26
我可以为ElementTree担保--它不是一个特别完整的XML实现。它的主要优点是使用DOM树对象的简单性。它们的行为就像常规的节奏曲对象(序列和片段),尽管它们的实际实现要比外表所显示的要复杂一些。在所有XML框架中,ET是可以用来快速完成基本任务的框架。
另一方面,如果您的XML大多是非常传统的东西,那么它可以很好地读取和格式化任何您抛出的文档。
恼人的限制(四个月前似乎还没有修复)是它对XML名称空间的不稳定支持,缺乏Xpath。
总之,它对于基本用途来说是很好的。它会让你很快地跟上速度。XML专家会发现它缺乏。
发布于 2011-06-21 23:07:29
我是BeautifulSoup的超级粉丝..。我发现它是最容易使用的解析器!
https://stackoverflow.com/questions/6432826
复制相似问题