mirror of
https://github.com/python/cpython.git
synced 2025-09-27 02:39:58 +00:00
Support non-namespace elements in *ElementNS of XMLGenerator.
This commit is contained in:
parent
1654b43ef7
commit
cf0a1cc417
2 changed files with 15 additions and 3 deletions
|
@ -112,11 +112,15 @@ def test_xmlgen_ns():
|
||||||
gen.startDocument()
|
gen.startDocument()
|
||||||
gen.startPrefixMapping("ns1", ns_uri)
|
gen.startPrefixMapping("ns1", ns_uri)
|
||||||
gen.startElementNS((ns_uri, "doc"), "ns1:doc", {})
|
gen.startElementNS((ns_uri, "doc"), "ns1:doc", {})
|
||||||
|
# add an unqualified name
|
||||||
|
gen.startElementNS((None, "udoc"), None, {})
|
||||||
|
gen.endElementNS((None, "udoc"), None)
|
||||||
gen.endElementNS((ns_uri, "doc"), "ns1:doc")
|
gen.endElementNS((ns_uri, "doc"), "ns1:doc")
|
||||||
gen.endPrefixMapping("ns1")
|
gen.endPrefixMapping("ns1")
|
||||||
gen.endDocument()
|
gen.endDocument()
|
||||||
|
|
||||||
return result.getvalue() == start + ('<ns1:doc xmlns:ns1="%s"></ns1:doc>' %
|
return result.getvalue() == start + \
|
||||||
|
('<ns1:doc xmlns:ns1="%s"><udoc></udoc></ns1:doc>' %
|
||||||
ns_uri)
|
ns_uri)
|
||||||
|
|
||||||
# ===== XMLFilterBase
|
# ===== XMLFilterBase
|
||||||
|
|
|
@ -62,6 +62,11 @@ class XMLGenerator(handler.ContentHandler):
|
||||||
self._out.write('</%s>' % name)
|
self._out.write('</%s>' % name)
|
||||||
|
|
||||||
def startElementNS(self, name, qname, attrs):
|
def startElementNS(self, name, qname, attrs):
|
||||||
|
if name[0] is None:
|
||||||
|
# if the name was not namespace-scoped, use the unqualified part
|
||||||
|
name = name[1]
|
||||||
|
else:
|
||||||
|
# else try to restore the original prefix from the namespace
|
||||||
name = self._current_context[name[0]] + ":" + name[1]
|
name = self._current_context[name[0]] + ":" + name[1]
|
||||||
self._out.write('<' + name)
|
self._out.write('<' + name)
|
||||||
|
|
||||||
|
@ -75,6 +80,9 @@ class XMLGenerator(handler.ContentHandler):
|
||||||
self._out.write('>')
|
self._out.write('>')
|
||||||
|
|
||||||
def endElementNS(self, name, qname):
|
def endElementNS(self, name, qname):
|
||||||
|
if name[0] is None:
|
||||||
|
name = name[1]
|
||||||
|
else:
|
||||||
name = self._current_context[name[0]] + ":" + name[1]
|
name = self._current_context[name[0]] + ":" + name[1]
|
||||||
self._out.write('</%s>' % name)
|
self._out.write('</%s>' % name)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue