LINQ to XML C # получить атрибут корневого элемента - PullRequest
3 голосов
/ 17 августа 2011

Допустим, у меня есть объект XElement doc:

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

как мне получить значение атрибута первого элемента (параметров), другими словами, как мне проверить, в каком режиме он включен.

, если я напишу

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

, это дает мне нулевую ошибку ссылки на объект

Ответы [ 3 ]

5 голосов
/ 17 августа 2011

Если doc является XElement, как вы говорите в своем вопросе, то вам, вероятно, не нужно снова сопоставлять его:

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

Если это XDocument, то вы можете использовать его свойство Root для ссылки на элемент документа:

if (doc.Root.Attribute("mode").Value.ToString() == "solve") {
    mode = 1;
}
0 голосов
/ 17 августа 2011

Когда вы звоните doc.Element("parameters"), вы пытаетесь посмотреть на элементы ниже корневого элемента (в данном случае, элементы на том же уровне, что и <inputs>).Вы хотите сделать это вместо:

if (input.Attribute("mode").Value == "solve") { mode = 1; }
0 голосов
/ 17 августа 2011

Просто используйте Root

if (doc.Root.Attribute("mode").Value.Equals("solve"))
{
   mode = 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...