mirror of
https://github.com/python/cpython.git
synced 2025-11-08 13:42:22 +00:00
Drop xmllib in favor of SAX.
This commit is contained in:
parent
1e53fa7907
commit
381832ead5
1 changed files with 30 additions and 21 deletions
|
|
@ -22,16 +22,11 @@ import re
|
||||||
import string
|
import string
|
||||||
import sys
|
import sys
|
||||||
import UserList
|
import UserList
|
||||||
|
import xml.sax
|
||||||
import xml.sax.saxutils
|
import xml.sax.saxutils
|
||||||
|
|
||||||
from types import ListType, StringType, TupleType
|
from types import ListType, StringType, TupleType
|
||||||
|
|
||||||
try:
|
|
||||||
from xml.parsers.xmllib import XMLParser
|
|
||||||
except ImportError:
|
|
||||||
from xmllib import XMLParser
|
|
||||||
|
|
||||||
|
|
||||||
from esistools import encode
|
from esistools import encode
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -439,14 +434,11 @@ class Parameter:
|
||||||
self.implied = 0
|
self.implied = 0
|
||||||
|
|
||||||
|
|
||||||
class TableParser(XMLParser):
|
class TableHandler(xml.sax.handler.ContentHandler):
|
||||||
def __init__(self, table=None):
|
def __init__(self):
|
||||||
if table is None:
|
self.__table = {}
|
||||||
table = {}
|
|
||||||
self.__table = table
|
|
||||||
self.__current = None
|
|
||||||
self.__buffer = ''
|
self.__buffer = ''
|
||||||
XMLParser.__init__(self)
|
self.__methods = {}
|
||||||
|
|
||||||
def get_table(self):
|
def get_table(self):
|
||||||
for entry in self.__table.values():
|
for entry in self.__table.values():
|
||||||
|
|
@ -457,6 +449,27 @@ class TableParser(XMLParser):
|
||||||
entry.has_content = 1
|
entry.has_content = 1
|
||||||
return self.__table
|
return self.__table
|
||||||
|
|
||||||
|
def startElement(self, tag, attrs):
|
||||||
|
try:
|
||||||
|
start, end = self.__methods[tag]
|
||||||
|
except KeyError:
|
||||||
|
start = getattr(self, "start_" + tag, None)
|
||||||
|
end = getattr(self, "end_" + tag, None)
|
||||||
|
self.__methods[tag] = (start, end)
|
||||||
|
if start:
|
||||||
|
start(attrs)
|
||||||
|
|
||||||
|
def endElement(self, tag):
|
||||||
|
start, end = self.__methods[tag]
|
||||||
|
if end:
|
||||||
|
end()
|
||||||
|
|
||||||
|
def endDocument(self):
|
||||||
|
self.__methods.clear()
|
||||||
|
|
||||||
|
def characters(self, data):
|
||||||
|
self.__buffer += data
|
||||||
|
|
||||||
def start_environment(self, attrs):
|
def start_environment(self, attrs):
|
||||||
name = attrs["name"]
|
name = attrs["name"]
|
||||||
self.__current = TableEntry(name, environment=1)
|
self.__current = TableEntry(name, environment=1)
|
||||||
|
|
@ -517,15 +530,11 @@ class TableParser(XMLParser):
|
||||||
p.text = self.__buffer
|
p.text = self.__buffer
|
||||||
self.__current.parameters.append(p)
|
self.__current.parameters.append(p)
|
||||||
|
|
||||||
def handle_data(self, data):
|
|
||||||
self.__buffer = self.__buffer + data
|
|
||||||
|
|
||||||
|
def load_table(fp):
|
||||||
def load_table(fp, table=None):
|
ch = TableHandler()
|
||||||
parser = TableParser(table=table)
|
xml.sax.parse(fp, ch)
|
||||||
parser.feed(fp.read())
|
return ch.get_table()
|
||||||
parser.close()
|
|
||||||
return parser.get_table()
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue