XDocument: Erreur en recherchant un element/attribut
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:
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:
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:
Citation:
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:
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 !