Bonjour a tous,
Je suis en plein Linq to XML et franchement je galere. je viens de "resoudre" un probleme sans vraiment comprendre ce que j'ai pu faire
Je dois traiter un fichier XML pour en ressortir des donnees. En voila un extrait:
Je charge les donnees XML en utilisant le code suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <ConfigDataFile xmlns:un="blabla.xsd" xmlns:xn="truc.xsd" xmlns:gn="machin.xsd" xmlns="configData.xsd" xmlns:es="Attributes"> <fileHeader fileFormatVersion="2.0.1" Name="Dupont"/> <configData dnPrefix="Undefined"> [...] </configData> <fileFooter dateTime="2011-11-28"/> </ConfigDataFile>
Si j'execute le code ci-dessus avec le XML donne plus haut, j'ai droit a une belle erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public bool loadXMLDoc(string FileNameXML) { var doc = XDocument.Load(FileNameXML); xmldoc = doc; string fileVersion = ""; fileVersion = xmldoc.Root.Element("fileHeader").Attribute("fileFormatVersion").Value; if (fileVersion == CONST_VERSION) return true; return false; }
J'ai eu beau le retourner dans tout les sens pas moyen de trouver un bout de code qui marche ...System.NullReferenceException was unhandled
Message=Object reference not set to an instance of an object.
Apres moult recherches (en creant de petits bouts de XML) j'en suis arrivee a modifier mon fichier XML originel de la maniere suivante:
Pour ceux qui ne suivent pas la difference se trouve dans la ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="UTF-8"?> <ConfigDataFile xmlns:un="blabla.xsd" xmlns:xn="truc.xsd" xmlns:gn="machin.xsd" xmlns:cd="configData.xsd" xmlns:es="Attributes"> <fileHeader fileFormatVersion="2.0.1" Name="Dupont"/> <configData dnPrefix="Undefined"> [...] </configData> <fileFooter dateTime="2011-11-28"/> </ConfigDataFile>
xmlns:cd="configData.xsd", j'ai effectivement rajoute un "identifiant" (je ne connais pas la denomination) devant le namespace que je suppose etre celui par defaut.
Si je passe ce nouveau fichier XML dans le meme code plus haut, pas d'erreur, le numero de version sort bien comme il le faut.
Quelqu'un aurait-il une idee du pourquoi du comment ?
Merci d'avance !
Partager