说我有XElement对象doc:
<parameters mode="solve">
<inputs>
<a>value_a</a>
...
...
我如何获得第一个元素(参数)的属性值,换句话说,我如何检查它是哪个模式。
如果我写
if ((string)doc.Element("parameters").Attribute("mode").Value == "solve") { mode = 1; }
它给我空对象引用错误
答案 0 :(得分:5)
如果doc
是XElement
,正如您在问题中所说,那么您可能不需要再次匹配它:
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; }