2011-08-17 115 views
3

廖運華說我有的XElement對象DOC:的LINQ to XML C#獲取root元素屬性

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

如何獲得的第一個元素(參數)的屬性值,換句話說,我該如何檢查哪種模式是開啓的。

如果我寫

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

它給我空對象引用錯誤

+0

你可以添加一個簡短但完整的程序來演示這個問題嗎? – dtb

+0

i'mafraid我不能,事情是它給了空對象引用錯誤,但如果我添加上面的<參數工作 – pingve

回答

5

如果docXElement,當你在你的問題,然後你可能不需要再次匹配它:

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

如果它是一個XDocument,那麼你可以使用它的Root屬性引用文檔元素:

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

多數民衆贊成多數民衆贊成我所需要的,ToString()失蹤,謝謝噸 – pingve

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; }