当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python xml.etree.ElementTree.XMLParser用法及代码示例


用法:

class xml.etree.ElementTree.XMLParser(*, target=None, encoding=None)

此类是模块的低级构建块。它使用xml.parsers.expat 进行高效的、基于事件的 XML 解析。它可以使用feed() 方法以增量方式提供XML 数据,并且解析事件被转换为推送API - 通过在target 对象上调用回调。如果省略target,则使用标准TreeBuilder。如果给定 encoding 1,则该值将覆盖 XML 文件中指定的编码。

在 3.8 版中更改:参数现在仅关键字.这html论点不再支持。

XMLParser.feed() 为每个开始标签调用 targetstart(tag, attrs_dict) 方法,为每个结束标签调用其 end(tag) 方法,数据由方法 data(data) 处理。有关进一步支持的回调方法,请参阅TreeBuilder 类。 XMLParser.close() 调用 target 的方法 close()XMLParser 不仅可以用于构建树结构。这是一个计算 XML 文件最大深度的示例:

>>> from xml.etree.ElementTree import XMLParser
>>> class MaxDepth:                     # The target object of the parser
...     maxDepth = 0
...     depth = 0
...     def start(self, tag, attrib):   # Called for each opening tag.
...         self.depth += 1
...         if self.depth > self.maxDepth:
...             self.maxDepth = self.depth
...     def end(self, tag):             # Called for each closing tag.
...         self.depth -= 1
...     def data(self, data):
...         pass            # We do not need to do anything with data.
...     def close(self):    # Called when all data has been parsed.
...         return self.maxDepth
...
>>> target = MaxDepth()
>>> parser = XMLParser(target=target)
>>> exampleXml = """
... <a>
...   <b>
...   </b>
...   <b>
...     <c>
...       <d>
...       </d>
...     </c>
...   </b>
... </a>"""
>>> parser.feed(exampleXml)
>>> parser.close()
4

相关用法


注:本文由纯净天空筛选整理自python.org大神的英文原创作品 xml.etree.ElementTree.XMLParser。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。