This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2008年03月28日 10:15 by mark, last changed 2022年04月11日 14:56 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| xmlreader_buffer.patch | christian.heimes, 2008年08月28日 18:34 | |||
| Messages (8) | |||
|---|---|---|---|
| msg64625 - (view) | Author: Mark Summerfield (mark) * | Date: 2008年03月28日 10:15 | |
The tiny program at the end of this message runs under Python 2.5 &
30a3. Under 2 it gives the following output:
: python sax.py test.xml
('+', u'document')
('+', u'outer')
('+', u'inner')
('-', u'inner')
('-', u'outer')
('-', u'document')
Done
Under 3 it does not terminate:
: python3 sax.py test.xml
+ document
+ outer
+ inner
- inner
- outer
- document
Traceback (most recent call last):
File "sax.py", line 19, in <module>
parser.parse(sys.argv[1])
File "/home/mark/opt/python30a3/lib/python3.0/xml/sax/expatreader.py",
line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/home/mark/opt/python30a3/lib/python3.0/xml/sax/xmlreader.py",
line 124, in parse
buffer = file.read(self._bufsize)
File "/home/mark/opt/python30a3/lib/python3.0/io.py", line 774, in read
current = self.raw.read(to_read)
KeyboardInterrupt
The xml.sax.parser() function seems to work fine if you give it an open
file object and close the file after the call. But the documentation
says you can give it a filename, but if you do that the parser does not
terminate in Python 3 although it works fine in Python 2.
# sax.py
import sys
import xml.sax
BUG = True
class SaxHandler(xml.sax.handler.ContentHandler):
def startElement(self, name, attributes):
print("+", name)
def endElement(self, name):
print("-", name)
handler = SaxHandler()
parser = xml.sax.make_parser()
parser.setContentHandler(handler)
if BUG:
parser.parse(sys.argv[1])
else:
fh = open(sys.argv[1], encoding="utf8")
parser.parse(fh)
fh.close()
print("Done")
# end of sax.py
Here is the test file:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<outer>
<inner>
</inner>
</outer>
</document>
|
|||
| msg64626 - (view) | Author: Christian Heimes (christian.heimes) * (Python committer) | Date: 2008年03月28日 10:31 | |
I had to disable three unit tests in test_sax. We didn't noticed the problem before because the tests weren't actually run. The three tests are marked clearly with XXX and FIXME. |
|||
| msg72102 - (view) | Author: Daniel Diniz (ajaksu2) * (Python triager) | Date: 2008年08月28日 18:10 | |
ISTM that this release blocker can be solved by changing xml.sax.xmlreader.py line 122 from: while buffer != "": to while buffer != b"": |
|||
| msg72103 - (view) | Author: Christian Heimes (christian.heimes) * (Python committer) | Date: 2008年08月28日 18:34 | |
I've a better idea: while buffer: It's faster and works for both empty bytes and str. The patch fixes the issue and re-enables three unit tests. |
|||
| msg72253 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年09月01日 14:34 | |
The patch looks great. (I love enabling disabled tests!) |
|||
| msg72288 - (view) | Author: Daniel Diniz (ajaksu2) * (Python triager) | Date: 2008年09月01日 20:00 | |
Looks like this is a duplicate of issue3590, so this patch fixes two release blockers ;) |
|||
| msg72461 - (view) | Author: Barry A. Warsaw (barry) * (Python committer) | Date: 2008年09月04日 02:20 | |
Benjamin will commit this. |
|||
| msg72463 - (view) | Author: Benjamin Peterson (benjamin.peterson) * (Python committer) | Date: 2008年09月04日 02:23 | |
Applied in r66203. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:56:32 | admin | set | github: 46753 |
| 2012年08月24日 08:34:14 | ncoghlan | set | messages: - msg168983 |
| 2012年08月24日 08:33:04 | python-dev | set | nosy:
+ python-dev messages: + msg168983 stage: resolved |
| 2008年09月04日 02:23:01 | benjamin.peterson | set | status: open -> closed resolution: accepted -> fixed messages: + msg72463 |
| 2008年09月04日 02:20:52 | barry | set | assignee: benjamin.peterson resolution: accepted messages: + msg72461 nosy: + barry |
| 2008年09月01日 20:00:14 | ajaksu2 | set | messages: + msg72288 |
| 2008年09月01日 14:34:10 | benjamin.peterson | set | keywords:
- needs review nosy: + benjamin.peterson messages: + msg72253 |
| 2008年08月28日 18:34:15 | christian.heimes | set | keywords:
+ needs review, patch files: + xmlreader_buffer.patch messages: + msg72103 |
| 2008年08月28日 18:10:06 | ajaksu2 | set | nosy:
+ ajaksu2 messages: + msg72102 |
| 2008年08月21日 14:55:18 | benjamin.peterson | set | priority: critical -> release blocker |
| 2008年03月28日 10:31:49 | christian.heimes | set | priority: critical nosy: + christian.heimes messages: + msg64626 |
| 2008年03月28日 10:15:13 | mark | create | |