我一直在研究一个项目(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,但是使用完整文件路径无效?
如果有人能提供解释,那就太好了。 感谢。
答案 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而不是文件名。