2010-08-26 4 views
0

Je suis en train de lire un XmlReader dans un XDocumentQu'est-ce qu'un attribut XML nul, et comment les gérer dans Linq-To-XML?

//GetContentStructureReader() retrieves the reader from an external source 
XmlReader reader = GetContentStructureReader(); 
XDocument.Load(reader); 

Je continue à recevoir l'exception suivante avec une source de données spécifique:

System.ArgumentNullException était non gérée par le code utilisateur du message = Valeur ne peut pas être nulle. Nom du paramètre: Valeur Source = System.Xml.Linq ParamName = valeur StackTrace: à System.Xml.Linq.XAttribute..ctor (nom XName, la valeur de l'objet) à System.Xml.Linq.XContainer.ReadContentFrom (XmlReader r) à System.Xml.Linq.XContainer.ReadContentFrom (XmlReader r, LoadOptions o) à System.Xml.Linq.XDocument.Load (lecteur XmlReader, options LoadOptions) à System.Xml.Linq.XDocument. Load (lecteur XmlReader)

Il semble donc que lors du chargement, un attribut XAttribute est en cours d'initialisation avec une valeur nulle.

Qu'est-ce qu'un attribut null dans XML? J'ai essayé d'examiner le document source (6 mégaoctets) pour corriger les données, mais en vain, puisque je ne sais pas quel type de construction XML je cherche.

Y a-t-il une solution de contournement pour cela?

Répondre

1

Lors du chargement d'un document, la valeur NULL ne doit pas apparaître comme valeurs pour XAttribute. Donc ce que vous voyez est inattendu. Vous pouvez vous arrêter sur l'exception dans le débogueur pour voir la callstack et les valeurs des paramètres (le nom XName en particulier) qui pourraient vous aider à localiser l'attribut dans le document source. (Vous pouvez aussi essayer (lecteur (IXmlLineInfo)) dans votre fenêtre de recherche sur l'une des images qui ont le lecteur défini Dans tous les cas, l'implémentation par défaut de XmlReader dans le .NET Framework ne devrait jamais causer cela. , où/comment avez-vous créé l'instance de l'objet XmlReader que vous avez passé à la méthode Load?

+0

J'ai quitté ce problème et je l'ai attaqué d'une autre manière, je ne pouvais pas attacher un débogueur à la ligne de code, car XmlReader a été créé à l'intérieur d'une bibliothèque tierce, en acceptant cela car le conseil sur le débogage est solide. – jevakallio

Questions connexes