首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >首选Python处理器

首选Python处理器
EN

Stack Overflow用户
提问于 2011-06-21 22:34:00
回答 4查看 406关注 0票数 3

与Python一起使用的首选XML处理器是什么?

有些选择是

  • 迷你型
  • PyXML
  • ElementTree
  • ..。

编辑:我需要能够阅读和操作文档。我还需要漂亮的打印功能。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-21 23:14:42

lxml是它的位置。

下面是一些示例代码:

代码语言:javascript
复制
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

代码语言:javascript
复制
<?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>
票数 9
EN

Stack Overflow用户

发布于 2011-06-21 23:17:26

我可以为ElementTree担保--它不是一个特别完整的XML实现。它的主要优点是使用DOM树对象的简单性。它们的行为就像常规的节奏曲对象(序列和片段),尽管它们的实际实现要比外表所显示的要复杂一些。在所有XML框架中,ET是可以用来快速完成基本任务的框架。

另一方面,如果您的XML大多是非常传统的东西,那么它可以很好地读取和格式化任何您抛出的文档。

恼人的限制(四个月前似乎还没有修复)是它对XML名称空间的不稳定支持,缺乏Xpath。

总之,它对于基本用途来说是很好的。它会让你很快地跟上速度。XML专家会发现它缺乏。

票数 0
EN

Stack Overflow用户

发布于 2011-06-21 23:07:29

我是BeautifulSoup的超级粉丝..。我发现它是最容易使用的解析器!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6432826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档