2014-01-28 53 views
0

我一直在研究一個項目(C#),其中一部分是用嵌入式xml文件填充數據網格。來自資源的ReadXml - 說明

儘管我現在已經找到了一種方法來完成這項工作,但我仍然對它背後的理論感到困惑。在我繼續這個項目之前,我想停下來,並確保我完全理解它。

我目前工作的代碼是;

XmlDataDocument myXML = new XmlDataDocument(); 
StringReader mytempXML = (new StringReader(BasicTest.Properties.Resources.myxml)); 
myXML.DataSet.ReadXml(mytempXML); 

什麼令我感到困惑的是,在這個解決方案之前,我正在嘗試以下;

myXML.DataSet.ReadXml(BasicTest.Properties.Resources.myxml); 

它不工作。但是使用完整的文件路徑(如下圖)正在工作。

myXML.DataSet.ReadXml("C:/..etc../myxml.xml"); 

我的問題是:爲什麼,如果你從一個資源閱讀,但使用一個完整的文件路徑所需ReadXML方法StringReader工作沒有?

如果任何人都可以提供解釋,那就太好了。 謝謝。

回答

0

這是因爲ReadXml方法需要一個字符串。該字符串必須是文件的名稱。它不能是XML。如果您將它傳遞給一個XML的字符串,它會認爲這是該文件的名稱!它沒有智能來查看字符串,並詢問「該字符串是XML還是文件名?」並弄清楚。

// Summary: 
//  Reads XML schema and data into the System.Data.DataSet using the specified 
//  file. 
// 
// Parameters: 
// fileName: 
//  The filename (including the path) from which to read. 
public XmlReadMode ReadXml(string fileName); 

通過在stringreader或流或東西包裹的XML,要調用不同的過載,即預計XML,而不是一個文件名。

+0

噢好吧,所以試圖通過使用BasicTest.Properties.Resources傳遞XML文件試圖通過實際的文件內容而不是名稱/路徑。這很有道理,非常感謝答案! – Reovius