擅长:python、mysql、java
<p>lxml具有基于标记的事件解析。
<a href="https://lxml.de/parsing.html#incremental-event-parsing" rel="nofollow noreferrer">incremental-event-parsing</a>
下面的方法奏效了</p>
<pre><code>parser = etree.XMLPullParser(events=('start', 'end'))
events = parser.read_events()
with open('.\sample.xml', 'rb') as f:
d1 = deque()
for line in f:
parser.feed(line)
for action, e in events:
if action == 'start':
d1.append(e.tag)
elif action == 'end' and len(d1) == 1:
if d1.pop() == e.tag:
root = parser.close()
print(etree.tostring(root, pretty_print=True, encoding="UTF-8").decode("UTF-8"))
else:
d1.pop()
</code></pre>