Supposons que j'ai un XmlNode et que je souhaite obtenir la valeur d'un attribut nommé "Name". Comment puis je faire ça?
XmlTextReader reader = new XmlTextReader(path);
XmlDocument doc = new XmlDocument();
XmlNode node = doc.ReadNode(reader);
foreach (XmlNode chldNode in node.ChildNodes)
{
**//Read the attribute Name**
if (chldNode.Name == Employee)
{
if (chldNode.HasChildNodes)
{
foreach (XmlNode item in node.ChildNodes)
{
}
}
}
}
Document XML:
<Root>
<Employee Name ="TestName">
<Childs/>
</Root>
<a x="1" />
, qui réussit le test. Peut-être que quelque chose comme çavar attr = node.Attributes["Name"]; if(attr != null) {...}
pourrait fonctionner.Pour étendre la solution de Konamiman (y compris toutes les vérifications nulles pertinentes), voici ce que j'ai fait:
la source
vous pouvez parcourir tous les attributs comme vous le faites avec les nœuds
la source
si vous n'avez besoin que des noms, utilisez plutôt xpath. Pas besoin de faire l'itération vous-même et de vérifier la valeur null.
la source
Si vous utilisez
chldNode
commeXmlElement
au lieu deXmlNode
, vous pouvez utiliserLa valeur de retour sera juste une chaîne vide , au cas où le nom d'attribut n'existe pas.
Votre boucle pourrait donc ressembler à ceci:
Cela sélectionnera tous les nœuds
<node>
entourés de<Node><N0de></N0de><Node>
balises, puis les parcourra en boucle et lira l'attribut "Nom".la source
Utilisation
pour obtenir la valeur.
la source
Vous pouvez également utiliser ceci;
la source
Encore une autre solution:
Cela évite également l'exception lorsque l'attribut attendu
attributeName
n'existe pas.la source