出于什么目的,哪个XML库?

Joh*_*Mee 8 python xml

搜索"python"和"xml"会返回各种库,以便将两者结合起来.

这个列表可能有问题:

  • xml.dom的
  • xml.etree
  • xml.sax
  • xml.parsers.expat
  • 的PyXML
  • beautifulsoup?
  • HTMLParser的
  • htmllib中
  • sgmllib中

如果有人可以快速总结何时使用哪个以及为什么,那就太好了.

Pet*_*ons 6

DOM/SAX鸿沟是基本的.它不仅适用于python,因为DOM和SAX是跨语言的.

DOM:将整个文档读入内存并进行操作.适用于:

  • 标记中标记之间的复杂关系
  • 小错综复杂的XML文档
  • 注意事项:
    • 易于使用过多的内存

SAX:在阅读文档时解析文档.适用于:

  • 长文档或开放式流
  • 内存是约束的地方
  • 注意事项:
    • 您需要编写一个有状态的解析器,这可能很棘手

beautifulsoup:

非常适合HTML或不太完善的标记.易于使用和快速.适用于屏幕抓取等.它可以使用标记,其中基于XML的标记只会通过错误说标记不正确.

我没有使用其余的大多数,但我不认为有关何时使用哪个的硬性规定.只是您的标准考虑因素:谁将维护代码,您认为哪些API最易于使用,它们的工作情况如何等等.

一般来说,对于基本需求,使用标准库模块很好,因为它们是"标准的",因此可用且众所周知.但是,如果您需要深入挖掘某些东西,几乎总会有更新的非标准模块在标准库之外具有卓越的功能.