Avatar billede sbrandsborg Nybegynder
06. januar 2008 - 08:54 Der er 4 kommentarer og
1 løsning

Problem med XmlNode

Hej alle,
Jeg sidder og kæmper lidt med at få min XMLNode til at trække data ud fra bestemte childs i min xml fil..

Jeg vil gerne trække text ud fra min "medlemFornavn" men kan ikke rigtig få den til det..
hvis jeg bruger "node.InnerText" får jeg alt data ud fra det enkelte medlem men når jeg bruger "node.Attributes("medlemFornavn").InnerText" får jeg bare en "Object reference not set to an instance of an object." fejl

Nogen der kan se hvad jeg gør galt?

-----VB kode-----
        Dim doc As XmlDocument
        Dim nodes As XmlNodeList

        doc = New XmlDocument()

        doc.Load("minSTI.xml")

        nodes = doc.SelectNodes("//data/medlemmer/medlem")

        For Each node As XmlNode In nodes
            'MsgBox(node.Attributes("medlemFornavn").InnerText)
            MsgBox(node.InnerText)

        Next



-----XML-----
<?xml version="1.0" encoding="ISO-8859-1" ?>
<data>
  <info>
    <date>1/6/2008</date>
    <time>8:22:42 AM</time>
  </info>
  <medlemmer>
    <medlem>
      <medlemNummer></medlemNummer>
      <medlemFornavn>test</medlemFornavn>
      <medlemEfternavne></medlemEfternavne>
      <medlemAdresse></medlemAdresse>
      <medlemPostnr></medlemPostnr>
      <medlemBy></medlemBy>
      <medlemTelefon></medlemTelefon>
      <medlemMobil></medlemMobil>
      <medlemEMail></medlemEMail>
      <medlemTitle></medlemTitle>
      <medlemType></medlemType>
    </medlem>
    <medlem>
      <medlemNummer></medlemNummer>
      <medlemFornavn>test2</medlemFornavn>
      <medlemEfternavne></medlemEfternavne>
      <medlemAdresse></medlemAdresse>
      <medlemPostnr></medlemPostnr>
      <medlemBy></medlemBy>
      <medlemTelefon></medlemTelefon>
      <medlemMobil></medlemMobil>
      <medlemEMail></medlemEMail>
      <medlemTitle></medlemTitle>
      <medlemType></medlemType>
    </medlem>
  </medlemmer>
</data>
Avatar billede nielle Nybegynder
06. januar 2008 - 09:43 #1
medlemFornavn er ikke en attribut af medlem - den er en childnode af medlem.

Noget i denne stil:

        nodes = doc.SelectNodes("//data/medlemmer/medlem")

        For Each node As XmlNode In nodes
            Dim medlemFornavnNode As XmlNode = node.SelectNodes("descendant::medlemFornavn")(0)
            MsgBox(medlemFornavnNode.InnerText)
        Next
Avatar billede nielle Nybegynder
06. januar 2008 - 09:44 #2
... eller hvis du slet ikke var interesseret i andet ved medlemmet, end fornavnet:

        nodes = doc.SelectNodes("//data/medlemmer/medlem/medlemFornavn")

        For Each node As XmlNode In nodes
            MsgBox(node.InnerText)
        Next
Avatar billede sbrandsborg Nybegynder
06. januar 2008 - 10:06 #3
mange tak virkede med det samme, kan du smide et svar?
Avatar billede nielle Nybegynder
06. januar 2008 - 10:06 #4
Svar :^)
Avatar billede nielle Nybegynder
06. januar 2008 - 10:12 #5
Måske en smule mere korrekt med:

        nodes = doc.SelectNodes("//data/medlemmer/medlem")

        For Each node As XmlNode In nodes
            Dim medlemFornavnNode As XmlNode = node.SelectNodes("child::medlemFornavn")(0)
            MsgBox(medlemFornavnNode.InnerText)
        Next
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester