Python SAX解析XML时,characters方法丢失值的问题
今天在读取一个17M左右大小的文档时,某个节点的值应该是300766但是读取到结果却是00766,经排查发现是因为读取大文件时会一个节点的值可能会被分成N个块(这点Java那边有较多的文章说明),此时characters函数会被连续调用N次。
解决方法:
- 因为要继承xml.sax.ContentHandler,故在__init__()中添加如下内容:
self.contents = [] # 存放content内容
- characters方法中添加如下内容:
self.contents.append(content)
self.temp = ''.join(self.contents) # 拼接成字符串并赋值给目标对象
- endElement方法中添加一行如下内容:
self.contents.clear()