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:

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>
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
 
        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;
        }
Si j'execute le code ci-dessus avec le XML donne plus haut, j'ai droit a une belle erreur:
System.NullReferenceException was unhandled
Message=Object reference not set to an instance of an object.
J'ai eu beau le retourner dans tout les sens pas moyen de trouver un bout de code qui marche ...

Apres moult recherches (en creant de petits bouts de XML) j'en suis arrivee a modifier mon fichier XML originel de la maniere suivante:

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>
Pour ceux qui ne suivent pas la difference se trouve dans la ligne:
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 !