2011-09-04 228 views
0

我嘗試使用LINQ來讀取XML文件。但是,存儲所選屬性值的字符串始終爲空。爲什麼字符串總是空的?

下面是代碼:

 string output = ""; 
     XDocument loaded = XDocument.Load(@"d:\input.xml"); 

     var ta = from tmp in loaded.Descendants("NewDataSet.Table") 
       select tmp.Element("E1"); 

     foreach (string ss in ta) 
     { 
      ouput += ss; 

     } 

output字符串總是空的。但ss字符串具有正確的值。

什麼問題?

我不知道如何添加樣式的XML文件。所以我必須將xml文件更新爲圖像。 :( enter image description here

+8

請發佈一個(小)代表XML文檔。 – Oded

+1

如果您逐步調試您的代碼,噹噹前語句(調試器的黃色bg行)到達大括號'}'時,您在'output'中看到了什麼? –

+0

對不起,但每個人都試圖幫助這裏今天是低調的 - 所有這些sherrifs在這裏的良好行爲 - 我想我會打電話給它的一天,現在不幫助任何人在這裏 - 也許所有那些可愛的小downvoters終於離開 - 但老實說:這一面是爲了不讓你的自我充電...是的,這是一個完全的舊金山咆哮,但不得不說它 – Carsten

回答

4

現在你已經證明你的XML,這裏是如何解決你的代碼:

var ta = from tmp in loaded.Descendants("Table") 
     select tmp.Element("E1"); 

,你在C#中做導航XML樹不要使用.在XML中,你可以還使用XPath導航XML樹:

var ta = from tmp in loaded.XPathSelectElements("NewDataSet/Table/E1") 
     select tmp; 

此外,我會建議你使用StringBuilder而不是字符串連接的這個輸出變量:

var ta = from tmp in loaded.Descendants("Table") 
     select tmp.Element("E1"); 

var builder = new StringBuilder(); 
foreach (string ss in ta) 
{ 
    builder.Append(ss); 
} 
string output = builder.ToString(); 
+0

現在工作正常。 :) – SUT

+1

在推薦優化之前的配置文件,並更喜歡StringWriter到StringBuilder。 –

+0

@Binary Worrier +1,對於給定的XML樣本,更喜歡'string'。 –

0
var ta = from tmp in loaded.Descendants("Table") 
select tmp.Element("E1"); 
相關問題