资源中的ReadXml - 解释

时间:2014-01-28 15:47:51

标签: c# datagridview resources dataset readxml

我一直在研究一个项目(C#),其中一部分是用嵌入式xml文件填充数据网格。

虽然我现在已经找到了一种方法来完成这项工作,但我仍然对它背后的理论感到困惑。在继续这个项目之前,我想停下来确保我完全理解它。

我目前正在使用的代码是;

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,但是使用完整文件路径无效?

如果有人能提供解释,那就太好了。 感谢。

1 个答案:

答案 0 :(得分: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);

通过将XML包装在字符串阅读器或流或其他内容中,您调用的是另一个重载,它需要XML而不是文件名。