请教大家,之前我在项目(非ASP.NET)中新加了一个XML文件,然后使用
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("./MyXML.xml");
找不到这个文件,错误提示说明必须要把这个文件拷贝到Bin/Debug目录下,折腾半天,把这个XML文件的Build Action改成了Embedded Resource,以及Copy always,才会让它自动拷贝。现在我想用另一种方式,即资源文件来解决,我在项目里加了一个Resource1.resx资源文件,把XML文件放到资源文件中,然后去取,无奈又取不到,所以来问问原因,应该怎么取?
ResourceManager temp = new ResourceManager("WpfApplication53.Resource1", typeof(Resource1).Assembly);
XmlDocument x = (XmlDocument)temp.GetObject("MyXML.xml");
资源文件中普通的字符串可以用temp.GetString()取到,那么XML文件不能这样取吗?
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("./MyXML.xml");
找不到这个文件,错误提示说明必须要把这个文件拷贝到Bin/Debug目录下,折腾半天,把这个XML文件的Build Action改成了Embedded Resource,以及Copy always,才会让它自动拷贝。现在我想用另一种方式,即资源文件来解决,我在项目里加了一个Resource1.resx资源文件,把XML文件放到资源文件中,然后去取,无奈又取不到,所以来问问原因,应该怎么取?
ResourceManager temp = new ResourceManager("WpfApplication53.Resource1", typeof(Resource1).Assembly);
XmlDocument x = (XmlDocument)temp.GetObject("MyXML.xml");
资源文件中普通的字符串可以用temp.GetString()取到,那么XML文件不能这样取吗?
System.Reflection.Assembly _assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream sStream = _assembly.GetManifestResourceStream("MyNamespace.xxx.xml");
System.Xml.XmlDocument doc = new XmlDocument();
doc.Load(sStream);
System.Reflection.Assembly _assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream sStream = _assembly.GetManifestResourceStream("WindowsFormsApplication1.XMLFile1.xml");
System.Xml.XmlDocument docx = new XmlDocument();
docx.Load(sStream);
MessageBox.Show(docx.OuterXml);
http://pic002.cnblogs.com/images/2011/50603/2011011309220674.png
Build Action - Embedded Resource的中文不是 生成操作-嵌入的资源 ???
你的代码只要把生成操作改成嵌入的资源,不需要复制文件,
System.Reflection.Assembly _assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream sStream = _assembly.GetManifestResourceStream("MyNamespace.xxx.xml");
System.Xml.XmlDocument doc = new XmlDocument();
doc.Load(sStream);
就可以取到。
嵌入之后,就没有xml文件了
因为资源文件中的字符串很容易取到:
ResourceManager temp = new ResourceManager("WpfApplication53.Resource1", typeof(Resource1).Assembly);
string s = temp.GetString("String1");那XML文件不能这样取吗?
ResourceManager temp = new ResourceManager("WpfApplication53.Resource1", typeof(Resource1).Assembly);
XmlDocument x = (XmlDocument)temp.GetObject("MyXML.xml");
为什么取到的是空的?
只要发布的时候包含这个文件,使用物理路径访问就可以了,物理路径可以在运行时计算出来。资源文件参考:
http://blog.csdn.net/flyingdream123/article/details/3754470
//Area
[assembly: WebResource("VeryCodes.Web.Controls.Area.Area.xml", "text/xml")]3、程序中访问:
string XmlUrl = "VeryCodes.Web.Controls.Area.Area.xml";
System.Reflection.Assembly thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = thisExe.GetManifestResourceStream(XmlUrl);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("namespace.class1.filename.xml");,前提是这个文件是以键入资源存在的。