Moi
XML filen parserointia harjoittelen Pythonilla.
Netistä löytyneeseen mallin yritän lisätä tietoa
http://code.activestate.com/recipes/577727-python-xml-parsing/
Ohjelma tulostaa ensin jokaisen noden erikseen. Tämä toimii myös lisäämilläni tiedoilla.
Sitten yritän parseroida datan ulos jokaisesta nodesta.
Alkuperäisessä esimerkissä käytetyt nimet ja iät saa erotettua XML-koodista
Ongelmana on, etten saa kaikista lisäämästäni nodeista pelkkää dataa irti ja printattua. Osa jää kokonaan piiloon, osa aiheuttaa ylivuodon ja kaatumisen (ne rivit on kommentoitu)
XML-filen tarkistin osoiteessa
w3schools.com/xml/xml_validator.asp
Mikä mättää parserointiharjoituksessani?
[code]# -- coding: utf-8 --"""
from xml.dom import minidom
fsock = open(‘Ruuvipenkki.xml’)
xmldoc = minidom.parse(fsock)
#print (xmldoc.toxml())
#print (’\n’)
grammarNode = xmldoc.firstChild
grammarNode.childNodes
#Nämä printtaukset näkyvät oikein
print ("*************** Print Child Node 1 ")
print (grammarNode.childNodes[1].toxml() )
print (" Print Child Node 3 ")
print (grammarNode.childNodes[3].toxml())
print (" Print Child Node 5 ")
print (grammarNode.childNodes[5].toxml())
print (" Print Child Node 7 ***************")
print (grammarNode.childNodes[7].toxml())
print ("*************** Print Child Node 9 ***************")
print (grammarNode.childNodes[9].toxml())
print ("*************** Print Child Node 11 ***************")
print (grammarNode.childNodes[11].toxml())
#Parseroidaan dataa
print ("\n**************** Näytä Data ******************** ")
#CHILD 1 TOIMII (esimerkin tietoa)
refNode = grammarNode.childNodes[1]
print (“child Node 1”)
pNode = refNode.childNodes[1]
print (“Nimi:”+ pNode.firstChild.data )
pNode = refNode.childNodes[3]
print (“Ikä:”+ pNode.firstChild.data )
pNode = refNode.childNodes[5]
print (“Vuosi:”+ pNode.firstChild.data )
print ("***************")
#CHILD 3 TOIMII
refNode = grammarNode.childNodes[3]
print (“child Node 3”)
pNode = refNode.childNodes[1]
print (“Nimi:”+ pNode.firstChild.data )
pNode = refNode.childNodes[3]
print (“Ikä:”+ pNode.firstChild.data )
pNode = refNode.childNodes[5]
print (“Vuosi:”+ pNode.firstChild.data )
print ("***************")
#CHILD 5 Tomii
refNode = grammarNode.childNodes[5]
print (“child Node 5”)
pNode = refNode.childNodes[1]
print (“stepnumber:”+ pNode.firstChild.data )
pNode = refNode.childNodes[3]
print (“modedisplay:”+ pNode.firstChild.data )
pNode = refNode.childNodes[5]
print (“output:”+ pNode.firstChild.data )
print ("***************")
#CHILD 7 ARVOT EI TULOSTU ?? .Nämä lisäsin esimerkkiin
refNode = grammarNode.childNodes[7]
print (“child Node7”)
pNode = refNode.childNodes[1]
print (“stepnumber:”+ pNode.firstChild.data )
pNode = refNode.childNodes[3]
print (“modedisplay:”+ pNode.firstChild.data )
#pNode = refNode.childNodes[5] # LIST INDE OUT OF RANGE
print (“output:”+ pNode.firstChild.data )
print ("***************")
#CHILD 9 Toimii
refNode = grammarNode.childNodes[9]
print (“child Node 9”)
pNode = refNode.childNodes[1]
print (“Steppi:”+ pNode.firstChild.data )
pNode = refNode.childNodes[3]
print (“Tapa:”+ pNode.firstChild.data )
pNode = refNode.childNodes[5]
print (“Tulos:”+ pNode.firstChild.data )
pNode = refNode.childNodes[7]
print (“Tulos:”+ pNode.firstChild.data )
print ("***************")
#CHILD 11 Edes eka arvo ei tulostu, Kaksi alinta kommentoitu ettei vuoda yli
refNode = grammarNode.childNodes[11]
print (“child Node 11”)
pNode = refNode.childNodes[1]
print (“Steppi:”+ pNode.firstChild.data )
#pNode = refNode.childNodes[3] List index out of range
print (“Tapa:”+ pNode.firstChild.data )
#pNode = refNode.childNodes[5] #List index out of range
print (“Tulos:”+ pNode.firstChild.data )
print ("***************")
[/code]
<?xml version="1.0" ?>
<test>
<value>
<name> Abhijeet Vaidya </name>
<age> 21 </age>
<year> 1990 </year>
</value>
<Midlevalue>
<name> Keerthan Pai </name>
<age> 21 </age>
<year> 1990 </year>
</Midlevalue>
<Endvalue>
<name> Krishnaraj </name>
<age> 21 </age>
<year> 1990 </year>
</Endvalue>
<teststeps>
<step>
<steppi>1</steppi>
<tapa>L0</tapa>
<tulos>543.184 mV</tulos>
</step>
<step>
<stepnumber>2</stepnumber>
<modedisplay>L1</modedisplay>
<output>543.184 mV</output>
</step>
</teststeps>
<commands>
<command>
Step #1 L0, 11
</command>
<command>
Step #2 L1, 22
</command>
<command>
Step #3 L2, 33
</command>
<command>
Step #4 L3, 44
</command>
</commands>
<instruments>
<instrument>
<name>
Mittalaite
</name>
<date>
1.1.1970
</date>
<instrserial>
1234
</instrserial>
</instrument>
</instruments>
</test>