@@ -91,6 +91,7 @@ def __init__(self, namespaceHandling=0, bufsize=2**16-20):
9191 self ._entity_stack = []
9292 self ._external_ges = 0
9393 self ._interning = None
94+ self ._namespace_prefixes = 1
9495
9596 # XMLReader methods
9697
@@ -126,8 +127,9 @@ def getFeature(self, name):
126127 return self ._namespaces
127128 elif name == feature_string_interning :
128129 return self ._interning is not None
129- elif name in (feature_validation , feature_external_pes ,
130- feature_namespace_prefixes ):
130+ elif name == feature_namespace_prefixes :
131+ return self ._namespace_prefixes
132+ elif name in (feature_validation , feature_external_pes ):
131133 return 0
132134 elif name == feature_external_ges :
133135 return self ._external_ges
@@ -147,6 +149,8 @@ def setFeature(self, name, state):
147149 self ._interning = {}
148150 else :
149151 self ._interning = None
152+ elif name == feature_namespace_prefixes :
153+ self ._namespace_prefixes = state
150154 elif name == feature_validation :
151155 if state :
152156 raise SAXNotSupportedException (
@@ -155,10 +159,6 @@ def setFeature(self, name, state):
155159 if state :
156160 raise SAXNotSupportedException (
157161 "expat does not read external parameter entities" )
158- elif name == feature_namespace_prefixes :
159- if state :
160- raise SAXNotSupportedException (
161- "expat does not report namespace prefixes" )
162162 else :
163163 raise SAXNotRecognizedException (
164164 "Feature '%s' not recognized" % name )
@@ -333,11 +333,14 @@ def start_element_ns(self, name, attrs):
333333 pair = name .split ()
334334 if len (pair ) == 1 :
335335 # no namespace
336+ elem_qname = name
336337 pair = (None , name )
337338 elif len (pair ) == 3 :
339+ elem_qname = "%s:%s" % (pair [2 ], pair [1 ])
338340 pair = pair [0 ], pair [1 ]
339341 else :
340342 # default namespace
343+ elem_qname = pair [1 ]
341344 pair = tuple (pair )
342345
343346 newattrs = {}
@@ -360,7 +363,7 @@ def start_element_ns(self, name, attrs):
360363 newattrs [apair ] = value
361364 qnames [apair ] = qname
362365
363- self ._cont_handler .startElementNS (pair , None ,
366+ self ._cont_handler .startElementNS (pair , elem_qname ,
364367 AttributesNSImpl (newattrs , qnames ))
365368
366369 def end_element_ns (self , name ):
0 commit comments