13. maj 2006 - 15:50
Der er
13 kommentarer og 1 løsning
Fejl hvis xml node er tom
Jeg har en konfigurations fil til mit program, som er en xml fil. Når mit program starter hiver den automatisk data ud fra den fil, og over i nogle tekstboxe. Men det er ikke sikkert det er alle felter i xml filen, der indeholder data. Er der feks et felt der er tomt, så får jeg fejl Object reference not set to an instance of an object. Jeg kan ordne det med en try catch, sådan her try { this.nup_Moms.Text = Moms.ChildNodes[0].InnerText; this.txt_CompanyName.Text = CompanyName.ChildNodes[0].InnerText; this.txt_Adr.Text = Adress.ChildNodes[0].InnerText; this.txt_Postnr.Text = Postnr.ChildNodes[0].InnerText; this.txt_By.Text = By.ChildNodes[0].InnerText; this.txt_Tlf.Text = Tlf.ChildNodes[0].InnerText; this.txt_Mobil.Text = Mobil.ChildNodes[0].InnerText; this.txt_WWW.Text = www.ChildNodes[0].InnerText; this.pct_Logo.Image = Image.FromFile(logo.ChildNodes[0].InnerText); } catch { } Men hvis feks Mobil er tom, så kommer www eller logo noden ikke med. Hvordan laver jeg det?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
du får vel en exception, ryger i catch og den bliver ikke sat du tester enten for om den eksisterer og forsøger kun at hente hvis den gør eller putter try catch omkring hver enkelt
ja havde tænkt på at komme en try catch om hver enkelt. Men er det en okay løsning?
Gider du kommer med et ekspemel Her er min nuværende kode XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Configuration.xml")); XmlNode Moms = xmlDocument.SelectSingleNode("/FirmaData/Moms/MomsProcent"); XmlNode CompanyName = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/FirmaNavn"); XmlNode Adress = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Adresse"); XmlNode Postnr = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Postnr"); XmlNode By = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/By"); XmlNode Tlf = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Tlf"); XmlNode Mobil = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Mobil"); XmlNode www = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Hjemmeside"); XmlNode logo = xmlDocument.SelectSingleNode("/FirmaData/Logo/LogoSti"); try { this.nup_Moms.Text = Moms.ChildNodes[0].InnerText; this.txt_CompanyName.Text = CompanyName.ChildNodes[0].InnerText; this.txt_Adr.Text = Adress.ChildNodes[0].InnerText; this.txt_Postnr.Text = Postnr.ChildNodes[0].InnerText; this.txt_By.Text = By.ChildNodes[0].InnerText; this.txt_Tlf.Text = Tlf.ChildNodes[0].InnerText; this.txt_Mobil.Text = Mobil.ChildNodes[0].InnerText; this.txt_WWW.Text = www.ChildNodes[0].InnerText; this.pct_Logo.Image = Image.FromFile(logo.ChildNodes[0].InnerText); } catch { }
this.txt_By.Text = By.ChildNodes[0].InnerText; -> if(By != null) this.txt_By.Text = By.ChildNodes[0].InnerText;
Jeg får stadig den samme fejl, hvis den er ikke indeholder noget XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Configuration.xml")); XmlNode Moms = xmlDocument.SelectSingleNode("/FirmaData/Moms/MomsProcent"); XmlNode CompanyName = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/FirmaNavn"); XmlNode Adress = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Adresse"); XmlNode Postnr = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Postnr"); XmlNode By = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/By"); XmlNode Tlf = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Tlf"); XmlNode Mobil = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Mobil"); XmlNode www = xmlDocument.SelectSingleNode("/FirmaData/FirmaOplysninger/Hjemmeside"); XmlNode logo = xmlDocument.SelectSingleNode("/FirmaData/Logo/LogoSti"); this.nup_Moms.Text = Moms.ChildNodes[0].InnerText; if(CompanyName != null)this.txt_CompanyName.Text = CompanyName.ChildNodes[0].InnerText; if(Adress != null) this.txt_Adr.Text = Adress.ChildNodes[0].InnerText; if(Postnr != null) this.txt_Postnr.Text = Postnr.ChildNodes[0].InnerText; if(By != null) this.txt_By.Text = By.ChildNodes[0].InnerText; if(Tlf != null) this.txt_Tlf.Text = Tlf.ChildNodes[0].InnerText; if(Mobil != null) this.txt_Mobil.Text = Mobil.ChildNodes[0].InnerText; if(www != null) this.txt_WWW.Text = www.ChildNodes[0].InnerText; if(logo != null) this.pct_Logo.Image = Image.FromFile(logo.ChildNodes[0].InnerText);
har du et tomt tag ? <Mobil/> ?
og hvilken linie kommer fejlen i ?
Den kommer bare med den fejl ligesom sidst, det ændrer ikke noget at jeg har en if foran Object reference not set to an instance of an object.
Sådan her ser min xml fil ud <?xml version="1.0" encoding="utf-8"?> <FirmaData> <Moms> <MomsProcent>21</MomsProcent> </Moms> <FirmaOplysninger> <FirmaNavn>gtht</FirmaNavn> <Adresse>rgrg</Adresse> <Postnr>4344</Postnr> <By>err</By> <Tlf> </Tlf> <Mobil>34433</Mobil> <Hjemmeside> </Hjemmeside> </FirmaOplysninger> <Logo> <LogoSti>C:\Documents and Settings\Administrator\Dokumenter\Billeder\250px-Spice_Girls_Gallery.jpg</LogoSti> </Logo> </FirmaData>
if(Tlf != null) -> if(Tlf != null && Tlf.HasChildNodes) o.s.v.
Nu virker det. Mange tak for svaret arne. Smid et svar :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.