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.
This commit is contained in:
Martin v. Löwis 2000-10-06 22:36:03 +00:00
parent 80670bcaba
commit 2c8a89cc3f
2 changed files with 14 additions and 12 deletions

View File

@ -331,7 +331,7 @@ class Element( Node ):
for a_name in a_names:
writer.write(" %s=\"" % a_name)
_write_data(writer, self._get_attributes()[a_name])
_write_data(writer, self._get_attributes()[a_name].value)
writer.write("\"")
if self.childNodes:
writer.write(">")
@ -429,7 +429,7 @@ class Document(Node):
def createAttributeNS(self, namespaceURI, qualifiedName):
prefix,localName = _nssplit(qualifiedName)
return Attr(namespaceURI, qualifiedName, localName, prefix)
return Attr(qualifiedName, namespaceURI, localName, prefix)
def getElementsByTagNameNS(self, namespaceURI, localName):
_getElementsByTagNameNSHelper(self, namespaceURI, localName)

View File

@ -27,26 +27,28 @@ class PullDOM(xml.sax.ContentHandler):
del self._ns_contexts[-1]
def startElementNS(self, name, tagName , attrs):
if name[0]:
uri,localname = name
if uri:
# When using namespaces, the reader may or may not
# provide us with the original name. If not, create
# *a* valid tagName from the current context.
if tagName is None:
tagName = self._current_context[name[0]] + ":" + name[1]
node = self.document.createElementNS(name[0], tagName)
tagName = self._current_context[uri] + ":" + localname
node = self.document.createElementNS(uri, tagName)
else:
# When the tagname is not prefixed, it just appears as
# name[1]
node = self.document.createElement(name[1])
# localname
node = self.document.createElement(localname)
for aname,value in attrs.items():
if aname[0]:
qname = self._current_context[name[0]] + ":" + aname[1]
attr = self.document.createAttributeNS(name[0], qname)
a_uri, a_localname = aname
if a_uri:
qname = self._current_context[a_uri] + ":" + a_localname
attr = self.document.createAttributeNS(a_uri, qname)
else:
attr = self.document.createAttribute(name[0], name[1])
attr = self.document.createAttribute(a_localname)
attr.value = value
node.setAttributeNode(qname, attr)
node.setAttributeNode(attr)
parent = self.curNode
node.parentNode = parent