2010-10-21 4 views
1

Une NullReferenceException est lancée par le moteur d'exécution quand je convertir XElement en XmlNode en utilisant la fonction suivante:C#: exception de référence nul générée lors de l'utilisation XmlDocment

public static XmlNode GetXmlNode(this XElement element) 
{ 
    using (XmlReader xmlReader = element.CreateReader()) 
    { 
     XmlDocument xmlDoc = new XmlDocument(); 
     xmlDoc.Load(xmlReader); 
     xmlDoc.ChildNodes[4].InnerXml = "0.15"; ====> null reference exception occurs here 
     return xmlDoc; 
    } 
} 

Comment puis-je convertir XElement à XmlNode sans ce problème?

+0

Est-ce que ChildNodes (une XmlNodeList) génère une exception d'index hors plage ou renvoie null lorsque vous essayez d'accéder à un noeud qui n'existe pas? Êtes-vous sûr que le nœud que vous essayez de modifier existe? –

+0

il existe il doesit jeter l'exception – ratty

+0

j'aime convertir Xelement en xmlnode – ratty

Répondre

2

Accéder à la première DocumentElement afin d'obtenir la racine:

xmlDoc.DocumentElement.ChildNodes[4].InnerXml = "0.15"; 

EDIT: un XmlDocument hérite de XmlNode. Vous devriez être en mesure de faire simplement ceci:

XmlNode node = xmlDoc.DocumentElement; 
return node; 

Si vous avez besoin de le jeter pour une méthode particulière, vous pouvez utiliser (XmlNode)xmlDoc.DocumentElement ou xmlDoc.DocumentElement as XmlNode.

+0

comment puis-je le convertir en XMLNode – ratty

+0

@ratty voir mon édition. –

Questions connexes