LINQ to XML C#获取根元素属性

时间:2011-08-17 14:52:24

标签: c# xml linq linq-to-xml

说我有XElement对象doc:

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

我如何获得第一个元素(参数)的属性值,换句话说,我如何检查它是哪个模式。

如果我写

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

它给我空对象引用错误

3 个答案:

答案 0 :(得分:5)

如果docXElement,正如您在问题中所说,那么您可能不需要再次匹配它:

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

如果是XDocument,那么您可以使用其Root属性来引用文档元素:

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

答案 1 :(得分:0)

只需使用Root

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

答案 2 :(得分:0)

当您调用doc.Element("parameters")时,您正试图查看根元素下面的元素(在这种情况下,与<inputs>处于同一级别的元素)。你想这样做:

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