栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用xml sax解析器读写大型xml?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用xml sax解析器读写大型xml?

您可以使用

xml.sax.saxutils.XMLFilterbase
实现来过滤掉project1节点。

您可以使用而不是自己组装xml字符串

xml.sax.saxutils.XMLGenerator

以下是Python3代码,

super
如果需要Python2 ,请进行调整。

from xml.sax import make_parserfrom xml.sax.saxutils import XMLFilterbase, XMLGeneratorclass Project1Filter(XMLFilterbase):    """This decides which SAX events to forward to the ContentHandler    We will not forward events when we are inside any elements with a    name specified in the 'tags_names_to_exclude' parameter    """    def __init__(self, tag_names_to_exclude, parent=None):        super().__init__(parent)        # set of tag names to exclude        self._tag_names_to_exclude = tag_names_to_exclude        # _project_1_count keeps track of opened project1 elements        self._project_1_count = 0    def _forward_events(self):        # will return True when we are not inside a project1 element        return self._project_1_count == 0    def startElement(self, name, attrs):        if name in self._tag_names_to_exclude: self._project_1_count += 1        if self._forward_events(): super().startElement(name, attrs)    def endElement(self, name):        if self._forward_events(): super().endElement(name)        if name in self._tag_names_to_exclude: self._project_1_count -= 1    def characters(self, content):        if self._forward_events(): super().characters(content)    # override other content handler methods on XMLFilterbase as neccessarydef main():    tag_names_to_exclude = {'project1', 'project2', 'project3'}    reader = Project1Filter(tag_names_to_exclude, make_parser())    with open('out-small.xml', 'w') as f:        handler = XMLGenerator(f)        reader.setContentHandler(handler)        reader.parse('input.xml')if __name__ == "__main__":    main()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/611359.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号