Avatar billede madox Nybegynder
20. december 2006 - 16:56 Der er 4 kommentarer og
1 løsning

Læse xml fil - virker ikke

Jeg har genereret en xmlfil som ser således ud:

<Project>
  <Fornavn>Martin</Fornavn>
  <Efternavn>Sørensen</Efternavn>
  <Posnr>4200</Posnr>
  <Alder>23</Alder>
</Project>


Men hvordan kan jeg læse denne fil? Jeg har forsøgt med følgende:


    Public Sub Read()
        Dim xtr As New XmlTextReader("StageConfig.xml")
        Do While xtr.Read
            If xtr.NodeType = XmlNodeType.Element Then
                If Not xtr.Name = "Project" Then
                    Select Case xtr.Name
                        Case "Fornavn"
                            HandleFornavn(xtr.Value)
                        Case "Efternavn"
                            HandleEfternavn(xtr.Value)
                        Case "Posnr"
                            HandlePostnr(xtr.Value)
                        Case "Alder"
                            HandleAlder(xtr.Value)
                    End Select
                End If
            End If
        Loop
        xtr.Close()
    End Sub

Problemet er at xtr.Value er "" hvor jeg havde håbet på at jeg fik fat i værdien "Martin".

Hvad gør jeg galt?
Avatar billede madox Nybegynder
20. december 2006 - 17:18 #1
fandt selv lige fejlen :-)
Avatar billede madox Nybegynder
20. december 2006 - 17:18 #2
.
Avatar billede kalp Novice
20. december 2006 - 17:24 #3
Godt nok... kunne du ikke også gøre sådan her?

Ret din XML til.

<Root>
<Project>
  <Fornavn>Martin</Fornavn>
  <Efternavn>Sørensen</Efternavn>
  <Postnr>4200</Postnr>
  <Alder>23</Alder>
</Project>
</Root>


istedet for XmlTextReader så brug  XmlDocument

f.eks

Dim document As New XmlDocument();
document.Load("stien til xml dokumentet");

ved ikke om du kan lave en foreach løkke i VB?
for så kunne du gøre sådan her..

Dim fornavn As string;
Dim efternavn As string;

foreach (XmlElement element in document.SelectNodes("//*"))
    {
      switch (element.Name)
      {
        case "Fornavn":  fornavn = element.InnerText; break;
        case "Efternavn":  efternavn = element.InnerText; break;
      }
    }


men som du kan se er min switch ikke magen til din, men det kan du lige lave til VB ;o)
Avatar billede nicklasw Nybegynder
21. december 2006 - 20:39 #4
og en converteret udgavet ;)
hvis folk skulle være i tvivl

Dim document As New XmlDocument()
document.Load("stien til xml dokumentet")

Dim fornavn As string
Dim efternavn As string

for each element as XmlElement in document.SelectNodes("//*")
   
      select case element.Name
     
        case "Fornavn"
            fornavn = element.InnerText
        case "Efternavn"
            efternavn = element.InnerText
      end select
next
Avatar billede kalp Novice
22. december 2006 - 20:28 #5
=)
Det er i hvertfald sådan jeg foretrækker at arbejde med XML
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