• Python之lxml库学习笔记四


    解析器对象:lxml.etree在默认情况下使用带默认配置的标准解析器,如果想配置解析器,可以创建自己的实例。

    >>> parser = etree.XMLParser(remove_blank_text=True) # lxml.etree only!

    本例在解析的时候创建了一个移除tags之间的空的文本的解析器,这可以减少tree的大小以及避免不定的tail,如果你知道空白内容对你来说是没有任何意义的话。

    >>> root = etree.XML("<root> <a/> <b> </b> </root>", parser)
    >>> etree.tostring(root)
    b’<root><a/><b> </b></root>’
    >>> for element in root.iter("*"):
    ... if element.text is not None and not element.text.strip():
    ... element.text = None
    >>> etree.tostring(root)
    b’<root><a/><b/></root>’

    递增解析:

    lxml.etree提供了两种方法来实现递增的逐步的解析。一个方法是通过类文件对象,它重复调用read() 方法。
    >>> class DataSource:
    ... data = [ b"<roo", b"t><", b"a/", b"><", b"/root>" ]
    ... def read(self, requested_size):
    ... try:
    ... return self.data.pop(0)
    ... except IndexError:
    ... return b’’
    >>> tree = etree.parse(DataSource())
    >>> etree.tostring(tree)
    b’<root><a/></root>’

    第二个方法是通过feed解析器接口,由feed(data) 和 close() 方法提供

    >>> parser = etree.XMLParser()
    >>> parser.feed("<roo")
    >>> parser.feed("t><")
    >>> parser.feed("a/")
    >>> parser.feed("><")
    >>> parser.feed("/root>")

    >>> root = parser.close()
    >>> etree.tostring(root)
    ’<root><a/></root>’

    在调用close() 方法(或者当有exception发生的时候),可以通过调用feed() 方法重新使用parser:
    >>> parser.feed("<root/>")
    >>> root = parser.close()
    >>> etree.tostring(root)
    b’<root/>’

    作者:Shane
    出处:http://bluescorpio.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    五场面试之后的小结
    玩转ubuntu之初体验
    现阶段规划小结
    高并发秒杀系统--课程总结与思考
    高并发秒杀系统--秒杀高并发分析与解决方案
    高并发秒杀系统--SpringMVC整合
    高并发秒杀系统--Service事务管理与继承测试
    高并发秒杀系统--Service接口设计与实现
    对于你为什么要离职的深入思考
    两场面试之后的小结
  • 原文地址:https://www.cnblogs.com/bluescorpio/p/1750327.html
Copyright © 2020-2023  润新知