XML - Vérifier l'existence d'un nœud spécifique
Je ne sais pas pourquoi j'ai tant de mal avec cela, mais je suis en espérant que quelqu'un peut me faire remarquer dans la bonne direction.
J'ai ces quelques lignes de code :
var xDoc = new XmlDocument();
xDoc.LoadXml(xelementVar.ToString());
if (xDoc.ChildNodes[0].HasChildNodes)
{
for (int i = 0; i < xDoc.ChildNodes[0].ChildNodes.Count; i++)
{
var sFormatId = xDoc.ChildNodes[0].ChildNodes[i].Attributes["formatID"].Value;
//Do some stuff
}
//Do some more stuff
}
Le problème est que le xDoc
je suis n'a pas toujours les formatID
nœud, de sorte que je finis par obtenir une référence nulle exception, même si 99% du temps il fonctionne parfaitement bien.
Ma question :
Comment puis-je vérifier si le formatID
nœud existe avant que j'essaie de lire le Value
hors de lui?
OriginalL'auteur X3074861X | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
si un nœud n'existe pas, elle renvoie null.
de vous pouvez faire un raccourci
Le format est comme ça.
c'est essentiellement à dire que si la condition est vraie, alors la variable = A, sinon, variable = B.
Glad je peux vous aider 🙂
OriginalL'auteur sora0419
Pourriez-vous utiliser DefaultIfEmpty()?
E. g
Ou comme d'autres l'ont suggéré, vérifiez que l'attribut n'est pas nulle:
DefaultIfEmpty
suggestion, j'avais totalement oublié. J'ai fini par utiliser lanull
vérifier avant d'essayer de lire la valeur.OriginalL'auteur DGibbs
Vous pouvez également le faire:
foreach
au lieu d'unfor
.Votre accueil :).
OriginalL'auteur terrybozzio
vous pouvez vérifier qui aiment ce
OriginalL'auteur Ehsan
Je pense que d'une façon plus propre de le faire serait:
OriginalL'auteur JLRishe
Dans la plupart des cas, nous sommes confrontés à des problèmes, car un XPath n'existe pas, Elle renvoie la valeur null et notre code s'arrête en raison de la InnerText.
Vous pouvez uniquement vérifier XPath existe ou pas et elle retourne null quand il n'existe pas.
OriginalL'auteur Sanjeev Singh