Avatar billede tbrg Novice
18. februar 2008 - 19:27 Der er 7 kommentarer og
1 løsning

NullReferenceException i forbindelse xml

Jeg forsøger at hente data fra en xml-fil, som giver mig en NullReferenceException "Objektreferencen er ikke indstillet til en forekomst af et objekt". Er der et klogt hovede, der kan gennemskue, hvad jeg gør forkert?

Her følger kode og xml. Exception opstår i linie 7:

1: XmlDocument settings = new XmlDocument();
2: settings.Load(Directory.GetCurrentDirectoy() + "\\settings.xml");
3: XmlNode declaration = settings.FirstChild;
4: XmlNode root = declaration.NextSibling;
5: XmlNode appSettings = root.FirstChild;
6: XmlNode setting = appSettings.FirstChild;

7: int x = int.Parse(setting["startposition_x"].InnerText); <-EXC!
8: int y = int.Parse(setting["startposition_y"].InnerText);
9: this.Location = new Point(x, y);

XML:
  <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
- <myApp>
  - <app_settings>
      <startposition_x>451</startposition_x>
      <startposition_y>279</startposition_y>
      <height>457</height>
      <width>778</width>
    </app_settings>
  </myApp>
Avatar billede arne_v Ekspert
18. februar 2008 - 19:31 #1
prøv:

XmlDocument settings = new XmlDocument();
settings.Load(Directory.GetCurrentDirectoy() + "\\settings.xml");
int x = int.Parse(settings.SelectSingleNode("//myapp/app_settings/startposition_x").Value)
int y = int.Parse(settings.SelectSingleNode("//myapp/app_settings/startposition_y").Value);
this.Location = new Point(x, y);
Avatar billede tbrg Novice
18. februar 2008 - 20:06 #2
Det giver mig en ArgumentNullException samme sted. I lokal-variablerne kan jeg se, at data er blevet hentet fra xml-filen, så jeg ved ikke, hvad det er, der giver null.
Avatar billede arne_v Ekspert
18. februar 2008 - 20:31 #3
int x = int.Parse(settings.SelectSingleNode("//myApp/app_settings/startposition_x/text()").Value);
            int y = int.Parse(settings.SelectSingleNode("//myApp/app_settings/startposition_y/text()").Value);
Avatar billede kalp Novice
18. februar 2008 - 21:33 #4
det her virker

XmlDocument document = new XmlDocument();
            document.LoadXml(
            @"<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes"" ?>"+
              "<myApp>"+
              "<app_settings>"+
      "<startposition_x>451</startposition_x> "+
      "<startposition_y>279</startposition_y> "+
      "<height>457</height> "+
      "<width>778</width> "+
    "</app_settings>"+
  "</myApp>"
                );

            int x = int.Parse(document.SelectSingleNode("//myApp/app_settings/startposition_x").InnerText);
            int y = int.Parse(document.SelectSingleNode("//myApp/app_settings/startposition_y").InnerText);
Avatar billede tbrg Novice
18. februar 2008 - 21:33 #5
Fandt problemet. Tilgik den forkerte node, setting, istedet for appSettings.....

int x = int.Parse(appSettings["startposition_x"].InnerText);

Men tak fordi du prøvede, arne_v.
Avatar billede tbrg Novice
18. februar 2008 - 21:43 #6
Hey kalp. Tak fordi du gad kigge på det, men nu har jeg fundet fejlen.
Avatar billede tbrg Novice
18. februar 2008 - 21:43 #7
Lukket.
Avatar billede arne_v Ekspert
19. februar 2008 - 01:42 #8
18/02-2008 20:31:12 er testet og virker, så "prøvede" er en underdrivelse.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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