3 votes

LINQ to XML C# obtenir l'attribut de l'élément Root

Disons que j'ai un doc. objet XElement :

<parameters mode="solve">
  <inputs>
    <a>value_a</a>
      ...
       ...

comment puis-je obtenir la valeur de l'attribut du premier élément (paramètres), en d'autres termes comment puis-je vérifier sur quel mode il se trouve.

si j'écris

if ((string)doc.Element("parameters").Attribute("mode").Value == "solve") { mode = 1; }

cela me donne une erreur de référence d'objet nulle

5voto

Frédéric Hamidi Points 123646

Si doc est un XElement comme vous le dites dans votre question, vous n'avez probablement pas besoin de le faire correspondre à nouveau :

if (doc.Attribute("mode").Value.ToString() == "solve") {
    mode = 1;
}

S'il s'agit d'un XDocument vous pouvez alors utiliser son Racine pour faire référence à l'élément de document :

if (doc.Root.Attribute("mode").Value.ToString() == "solve") {
    mode = 1;
}

0voto

msarchet Points 9059

Il suffit d'utiliser le Root

if (doc.Root.Attribute("mode").Value.Equals("solve"))
{
   mode = 1;
}

0voto

Ed Schwehm Points 1323

Lorsque vous appelez doc.Element("parameters") vous essayez d'examiner les éléments situés sous l'élément Root (dans ce cas, les éléments situés au même niveau que l'élément <inputs> ). Y

if (input.Attribute("mode").Value == "solve") { mode = 1; }

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