[Tutor] Parsing XML with minidom - problem solved
Ertl, John
John.Ertl at fnmoc.navy.mil
Thu Jul 8 21:07:08 CEST 2004
I guess to get to the data I need to look at the childNode of each.
each.childNodes[0].data
John
I am trying to use minidom to parse a small XML string. This is the test
before I move onto bigger and better parsing but I am not getting the
results I expected.
I am trying to make a list of integers from the XML.
def parsexml(xmlstring):
import xml.dom.minidom
doc = xml.dom.minidom.parseString(xmlstring)
print doc.toxml()
intlist = []
modlist = doc.getElementsByTagName("element")
for each in modlist:
intlist.append(each.data)
return intlist
if __name__ == "__main__":
xml = """<SOAP-ENV:Body>
<xmlString>
<element xsi:type="xsd:integer">1</element>
<element xsi:type="xsd:integer">2</element>
<element xsi:type="xsd:integer">3</element>
<element xsi:type="xsd:integer">4</element>
<element xsi:type="xsd:integer">5</element>
<element xsi:type="xsd:integer">6</element>
<element xsi:type="xsd:integer">7</element>
<element xsi:type="xsd:integer">8</element>
<element xsi:type="xsd:integer">9</element>
<element xsi:type="xsd:integer">10</element>
</xmlString>
</SOAP-ENV:Body>
"""
intlist = parsexml(xml)
print intlist
Output is :
<?xml version="1.0" ?>
<SOAP-ENV:Body>
<xmlString>
<element xsi:type="xsd:integer">1</element>
<element xsi:type="xsd:integer">2</element>
<element xsi:type="xsd:integer">3</element>
<element xsi:type="xsd:integer">4</element>
<element xsi:type="xsd:integer">5</element>
<element xsi:type="xsd:integer">6</element>
<element xsi:type="xsd:integer">7</element>
<element xsi:type="xsd:integer">8</element>
<element xsi:type="xsd:integer">9</element>
<element xsi:type="xsd:integer">10</element>
</xmlString>
</SOAP-ENV:Body>
Traceback (most recent call last):
File "./MyHandler.py", line 81, in ?
value = parsexml(xml)
File "./MyHandler.py", line 15, in parsexml
print each.data
AttributeError: Element instance has no attribute 'data'
If I instead of try to get the data I just :
for each in modlist:
print each.toxml()
I get the following...This makes me think that I am indeed looking for data
in the correct place?
<element xsi:type="xsd:integer">1</element>
<element xsi:type="xsd:integer">2</element>
<element xsi:type="xsd:integer">3</element>
<element xsi:type="xsd:integer">4</element>
<element xsi:type="xsd:integer">5</element>
<element xsi:type="xsd:integer">6</element>
<element xsi:type="xsd:integer">7</element>
<element xsi:type="xsd:integer">8</element>
<element xsi:type="xsd:integer">9</element>
<element xsi:type="xsd:integer">10</element>
[]
Thanks
John Ertl
More information about the Tutor
mailing list