Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: XML-parserointia (Python)

käärme [24.11.2012 23:46:58]

#

Iltaa

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
http://www.w3schools.com/xml/xml_validator.asp

Mikä mättää parserointiharjoituksessani?

# -*- coding: utf-8 -*-"""

from xml.dom import minidom

fsock = open('tiedot.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 ("***************")
<?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>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta