]> granicus.if.org Git - python/commitdiff
Fix Issue10205 - XML QName error when different tags have same QName.
authorSenthil Kumaran <orsenthil@gmail.com>
Tue, 9 Nov 2010 02:36:59 +0000 (02:36 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Tue, 9 Nov 2010 02:36:59 +0000 (02:36 +0000)
Lib/test/test_xml_etree.py
Lib/xml/etree/ElementTree.py

index e802359bbf6f09cd1f62af867580e6d182dde036..08f7988ec50d388a2c5cf333e1a3ba0916f28c38 100644 (file)
@@ -1119,6 +1119,11 @@ def qname():
     >>> elem = ET.Element(ET.QName("uri", "tag"))
     >>> serialize(elem) # 1.3
     '<ns0:tag xmlns:ns0="uri" />'
+    >>> elem = ET.Element(ET.QName("uri", "tag"))
+    >>> subelem = ET.SubElement(elem, ET.QName("uri", "tag1"))
+    >>> subelem = ET.SubElement(elem, ET.QName("uri", "tag2"))
+    >>> serialize(elem) # 1.4
+    '<ns0:tag xmlns:ns0="uri"><ns0:tag1 /><ns0:tag2 /></ns0:tag>'
 
     2) decorated attributes
 
index 9f5717e0091c8bef9ad54cc58d3c9660870750ec..75fbea998ad1aac5f83123191971a872fe936667 100644 (file)
@@ -913,8 +913,9 @@ def _namespaces(elem, default_namespace=None):
         iterate = elem.getiterator # cET compatibility
     for elem in iterate():
         tag = elem.tag
-        if isinstance(tag, QName) and tag.text not in qnames:
-            add_qname(tag.text)
+        if isinstance(tag, QName):
+            if tag.text not in qnames:
+                add_qname(tag.text)
         elif isinstance(tag, str):
             if tag not in qnames:
                 add_qname(tag)