|
113 | 113 | XML-RPC value |
114 | 114 | Binary binary data wrapper |
115 | 115 |
|
116 | | - SlowParser Slow but safe standard parser (based on xmllib) |
117 | 116 | Marshaller Generate an XML-RPC params chunk from a Python data structure |
118 | 117 | Unmarshaller Unmarshal an XML-RPC response from incoming XML event message |
119 | 118 | Transport Handles an HTTP transaction to an XML-RPC server |
|
136 | 135 |
|
137 | 136 | import re, time, operator |
138 | 137 | import http.client |
| 138 | +from xml.parsers import expat |
139 | 139 |
|
140 | 140 | # -------------------------------------------------------------------- |
141 | 141 | # Internal stuff |
@@ -439,30 +439,23 @@ def _binary(data): |
439 | 439 | # -------------------------------------------------------------------- |
440 | 440 | # XML parsers |
441 | 441 |
|
442 | | -try: |
443 | | - from xml.parsers import expat |
444 | | - if not hasattr(expat, "ParserCreate"): |
445 | | - raise ImportError |
446 | | -except ImportError: |
447 | | - ExpatParser = None # expat not available |
448 | | -else: |
449 | | - class ExpatParser: |
450 | | - # fast expat parser for Python 2.0 and later. |
451 | | - def __init__(self, target): |
452 | | - self._parser = parser = expat.ParserCreate(None, None) |
453 | | - self._target = target |
454 | | - parser.StartElementHandler = target.start |
455 | | - parser.EndElementHandler = target.end |
456 | | - parser.CharacterDataHandler = target.data |
457 | | - encoding = None |
458 | | - target.xml(encoding, None) |
459 | | - |
460 | | - def feed(self, data): |
461 | | - self._parser.Parse(data, 0) |
462 | | - |
463 | | - def close(self): |
464 | | - self._parser.Parse("", 1) # end of data |
465 | | - del self._target, self._parser # get rid of circular references |
| 442 | +class ExpatParser: |
| 443 | + # fast expat parser for Python 2.0 and later. |
| 444 | + def __init__(self, target): |
| 445 | + self._parser = parser = expat.ParserCreate(None, None) |
| 446 | + self._target = target |
| 447 | + parser.StartElementHandler = target.start |
| 448 | + parser.EndElementHandler = target.end |
| 449 | + parser.CharacterDataHandler = target.data |
| 450 | + encoding = None |
| 451 | + target.xml(encoding, None) |
| 452 | + |
| 453 | + def feed(self, data): |
| 454 | + self._parser.Parse(data, 0) |
| 455 | + |
| 456 | + def close(self): |
| 457 | + self._parser.Parse("", 1) # end of data |
| 458 | + del self._target, self._parser # get rid of circular references |
466 | 459 |
|
467 | 460 | # -------------------------------------------------------------------- |
468 | 461 | # XML-RPC marshalling and unmarshalling code |
@@ -912,10 +905,8 @@ def getparser(use_datetime=0): |
912 | 905 | target = Unmarshaller(use_datetime=use_datetime) |
913 | 906 | if FastParser: |
914 | 907 | parser = FastParser(target) |
915 | | - elif ExpatParser: |
916 | | - parser = ExpatParser(target) |
917 | 908 | else: |
918 | | - parser = SlowParser(target) |
| 909 | + parser = ExpatParser(target) |
919 | 910 | return parser, target |
920 | 911 |
|
921 | 912 | ## |
|
0 commit comments