Kaydet (Commit) 2c8a89cc authored tarafından Martin v. Löwis's avatar Martin v. Löwis

minidom: access attribute value before printing it

         correct order of constructor args in createAttributeNS
pulldom: use symbolic names for uri and localnames
         correct usage of createAttribute and setAttributeNode signatures.
üst 80670bca
...@@ -331,7 +331,7 @@ class Element( Node ): ...@@ -331,7 +331,7 @@ class Element( Node ):
for a_name in a_names: for a_name in a_names:
writer.write(" %s=\"" % a_name) writer.write(" %s=\"" % a_name)
_write_data(writer, self._get_attributes()[a_name]) _write_data(writer, self._get_attributes()[a_name].value)
writer.write("\"") writer.write("\"")
if self.childNodes: if self.childNodes:
writer.write(">") writer.write(">")
...@@ -429,7 +429,7 @@ class Document(Node): ...@@ -429,7 +429,7 @@ class Document(Node):
def createAttributeNS(self, namespaceURI, qualifiedName): def createAttributeNS(self, namespaceURI, qualifiedName):
prefix,localName = _nssplit(qualifiedName) prefix,localName = _nssplit(qualifiedName)
return Attr(namespaceURI, qualifiedName, localName, prefix) return Attr(qualifiedName, namespaceURI, localName, prefix)
def getElementsByTagNameNS(self, namespaceURI, localName): def getElementsByTagNameNS(self, namespaceURI, localName):
_getElementsByTagNameNSHelper(self, namespaceURI, localName) _getElementsByTagNameNSHelper(self, namespaceURI, localName)
......
...@@ -27,26 +27,28 @@ class PullDOM(xml.sax.ContentHandler): ...@@ -27,26 +27,28 @@ class PullDOM(xml.sax.ContentHandler):
del self._ns_contexts[-1] del self._ns_contexts[-1]
def startElementNS(self, name, tagName , attrs): def startElementNS(self, name, tagName , attrs):
if name[0]: uri,localname = name
if uri:
# When using namespaces, the reader may or may not # When using namespaces, the reader may or may not
# provide us with the original name. If not, create # provide us with the original name. If not, create
# *a* valid tagName from the current context. # *a* valid tagName from the current context.
if tagName is None: if tagName is None:
tagName = self._current_context[name[0]] + ":" + name[1] tagName = self._current_context[uri] + ":" + localname
node = self.document.createElementNS(name[0], tagName) node = self.document.createElementNS(uri, tagName)
else: else:
# When the tagname is not prefixed, it just appears as # When the tagname is not prefixed, it just appears as
# name[1] # localname
node = self.document.createElement(name[1]) node = self.document.createElement(localname)
for aname,value in attrs.items(): for aname,value in attrs.items():
if aname[0]: a_uri, a_localname = aname
qname = self._current_context[name[0]] + ":" + aname[1] if a_uri:
attr = self.document.createAttributeNS(name[0], qname) qname = self._current_context[a_uri] + ":" + a_localname
attr = self.document.createAttributeNS(a_uri, qname)
else: else:
attr = self.document.createAttribute(name[0], name[1]) attr = self.document.createAttribute(a_localname)
attr.value = value attr.value = value
node.setAttributeNode(qname, attr) node.setAttributeNode(attr)
parent = self.curNode parent = self.curNode
node.parentNode = parent node.parentNode = parent
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment