• 技术文章 >Python技术 >Python基础教程

    python操作xml的两种方法

    小妮浅浅小妮浅浅2021-07-22 14:13:25原创98

    说明

    1、DOM会将整个XML读入内存,解析为树,所以占用内存大,解析慢。它的优点是可以随意遍历树的节点。

    2、SAX是一种流模式,边读边分析,占用内存小,分析快,缺点是需要自己处理事件。一般情况下,SAX优先考虑,因为DOM占用内存太多。

    实例

    from xml.parsers.expat import ParserCreate
     
    class DefaultSaxHandler(object):
        def start_element(self, name, attrs):
            print('sax:start_element: %s, attrs: %s' % (name, str(attrs)))
     
        def end_element(self, name):
            print('sax:end_element: %s' % name)
     
        def char_data(self, text):
            print('sax:char_data: %s' % text)
     
    xml = r'''<?xml version="1.0"?>
    <ol>
        <li><a href="/python">Python</a></li>
        <li><a href="/ruby">Ruby</a></li>
    </ol>
    '''
     
    handler = DefaultSaxHandler()
    parser = ParserCreate()
    parser.StartElementHandler = handler.start_element
    parser.EndElementHandler = handler.end_element
    parser.CharacterDataHandler = handler.char_data
    parser.Parse(xml)
     
    //测试结果
    sax:start_element: ol, attrs: {}
    sax:char_data:
     
    sax:char_data:     
    sax:start_element: li, attrs: {}
    sax:start_element: a, attrs: {'href': '/python'}
    sax:char_data: Python
    sax:end_element: a
    sax:end_element: li
    sax:char_data:
     
    sax:char_data:     
    sax:start_element: li, attrs: {}
    sax:start_element: a, attrs: {'href': '/ruby'}
    sax:char_data: Ruby
    sax:end_element: a
    sax:end_element: li
    sax:char_data:
     
    sax:end_element: ol

    以上就是python操作xml的两种方法,希望对大家有所帮助。更多Python学习指路:python基础教程

    专题推荐:python xml
    品易云
    上一篇:python urllib库有什么用 下一篇:python中htmlparser解析html

    相关文章推荐

    • python赋值运算符如何使用• python赋值运算符支持哪些赋值• python赋值运算符是什么• python传递实参的方法• python关键字实参的使用• python导入模块的过程• python中Task封装协程• python爬虫从ip池获取随机IP• python迭代器和生成器的总结• python切片有哪些特征• python卡方检验是什么• python中T检验如何理解• python方差检验是什么意思• python爬虫ip代理池怎么用• python urllib库有什么用

    全部评论我要评论

  • 取消发布评论
  • 

    Python学习网