2014-01-28 23 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