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

3
假设我有一个XElement对象doc:
<parameters mode="solve">
  <inputs>
    <a>value_a</a>
      ...
       ...

我能如何获取第一个元素(parameters)的属性值,换句话说,我该如何检查它的模式。

如果我写下以下代码:

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

我遇到了空对象引用错误。


你能添加一个简短但完整的程序来演示这个问题吗? - dtb
很抱歉,我不能这样做。问题是它给了我一个空对象引用错误,但如果我在<parameters上面添加另一个元素,它就可以工作了。 - pingve
3个回答

5
如果你在问题中所说的doc是一个XElement,那么你可能不需要再次匹配它了。
if (doc.Attribute("mode").Value.ToString() == "solve") {
    mode = 1;
}

如果它是一个XDocument,那么你可以使用它的Root属性来引用文档元素:

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

0

只需使用Root

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

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接