mirror of
https://github.com/python/cpython.git
synced 2025-10-28 17:13:08 +00:00
Merge 3.2: issue #2892
This commit is contained in:
commit
f24e7e6c41
4 changed files with 53 additions and 34 deletions
|
|
@ -754,6 +754,7 @@ def iterparse():
|
|||
... print(action, elem.tag)
|
||||
... except ET.ParseError as v:
|
||||
... print(v)
|
||||
end document
|
||||
junk after document element: line 1, column 12
|
||||
"""
|
||||
|
||||
|
|
|
|||
|
|
@ -1250,6 +1250,7 @@ class _IterParseIterator:
|
|||
self._close_file = close_source
|
||||
self._events = []
|
||||
self._index = 0
|
||||
self._error = None
|
||||
self.root = self._root = None
|
||||
self._parser = parser
|
||||
# wire up the parser for event reporting
|
||||
|
|
@ -1291,24 +1292,31 @@ class _IterParseIterator:
|
|||
while 1:
|
||||
try:
|
||||
item = self._events[self._index]
|
||||
except IndexError:
|
||||
if self._parser is None:
|
||||
self.root = self._root
|
||||
if self._close_file:
|
||||
self._file.close()
|
||||
raise StopIteration
|
||||
# load event buffer
|
||||
del self._events[:]
|
||||
self._index = 0
|
||||
data = self._file.read(16384)
|
||||
if data:
|
||||
self._parser.feed(data)
|
||||
else:
|
||||
self._root = self._parser.close()
|
||||
self._parser = None
|
||||
else:
|
||||
self._index = self._index + 1
|
||||
self._index += 1
|
||||
return item
|
||||
except IndexError:
|
||||
pass
|
||||
if self._error:
|
||||
e = self._error
|
||||
self._error = None
|
||||
raise e
|
||||
if self._parser is None:
|
||||
self.root = self._root
|
||||
if self._close_file:
|
||||
self._file.close()
|
||||
raise StopIteration
|
||||
# load event buffer
|
||||
del self._events[:]
|
||||
self._index = 0
|
||||
data = self._file.read(16384)
|
||||
if data:
|
||||
try:
|
||||
self._parser.feed(data)
|
||||
except SyntaxError as exc:
|
||||
self._error = exc
|
||||
else:
|
||||
self._root = self._parser.close()
|
||||
self._parser = None
|
||||
|
||||
def __iter__(self):
|
||||
return self
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue