80 votes

Lire l'attribut XML à l'aide de XmlDocument

Comment lire un attribut XML à l'aide de XmlDocument de C #?

J'ai un fichier XML qui ressemble à ceci:

 <?xml version="1.0" encoding="utf-8" ?>
<MyConfiguration xmlns="http://tempuri.org/myOwnSchema.xsd" SuperNumber="1" SuperString="whipcream">
    <Other stuff />
</MyConfiguration> 
 

Comment pourrais-je lire les attributs XML SuperNumber et SuperString?

Actuellement, j'utilise XmlDocument et j'obtiens les valeurs entre celles-ci en utilisant GetElementsByTagName() XmlDocument et cela fonctionne très bien. Je n'arrive pas à comprendre comment obtenir les attributs?

116voto

ArsenMkrt Points 24447
     XmlNodeList elemList = doc.GetElementsByTagName(...);
    for (int i = 0; i < elemList.Count; i++)
    {
        string attrVal = elemList[i].Attributes["SuperString"].Value;
    }  
 

est-ce que cela aide?

89voto

Greg Points 1378

Vous devriez regarder dans XPath. Une fois que vous commencer à l'utiliser, vous trouverez beaucoup plus facile et efficace pour que le code de l'itération par le biais de listes. Il vous permet également d'obtenir directement les choses que vous voulez.

Ensuite, le code serait quelque chose de similaire

string attrVal = doc.SelectSingleNode("/MyConfiguration/@SuperNumber").Value;

8voto

Matt Sherman Points 3874

Vous pouvez migrer vers XDocument au lieu de XmlDocument et ensuite utiliser Linq si vous préférez que la syntaxe. Quelque chose comme:

var q = (from myConfig in xDoc.Elements("MyConfiguration")
         select myConfig.Attribute("SuperString").Value)
         .First();

8voto

siva Points 21

J'ai un Fichier Xml books.xml

<ParameterDBConfig>
    <ID Definition="1" />
</ParameterDBConfig>

Programme:

XmlDocument doc = new XmlDocument();
doc.Load("D:/siva/books.xml");
XmlNodeList elemList = doc.GetElementsByTagName("ID");     
for (int i = 0; i < elemList.Count; i++)     
{
    string attrVal = elemList[i].Attributes["Definition"].Value;
}

Maintenant, attrVal a la valeur de ID.

5voto

jerryjvl Points 9310

XmlDocument.Attributes peut-être? (Qui a une méthode GetNamedItem qui va sans doute faire ce que vous voulez, bien que je l'ai toujours répété de la collection d'attribut)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X