C# C XML-读取包含的XML文档
我创建了一个基本项目,在其中添加了一个非常简单的xml文件。我可以在项目解决方案中看到文件和我的表单。我正试图编写代码来读取xml文件,但我似乎无法访问它,因为visual studio似乎没有意识到它就在那里,如果这有意义的话?我怎样才能得到那个文件,这样我就可以做类似的事情了C# C XML-读取包含的XML文档,c#,xml,visual-studio,C#,Xml,Visual Studio,我创建了一个基本项目,在其中添加了一个非常简单的xml文件。我可以在项目解决方案中看到文件和我的表单。我正试图编写代码来读取xml文件,但我似乎无法访问它,因为visual studio似乎没有意识到它就在那里,如果这有意义的话?我怎样才能得到那个文件,这样我就可以做类似的事情了 XmlDocument doc = new XmlDocument(); doc.Load("My document here") 谢谢您的意思是将xml文件添加到解决方案中?如果是这样,您需要编辑xml文件的属性,
XmlDocument doc = new XmlDocument();
doc.Load("My document here")
谢谢您的意思是将xml文件添加到解决方案中?如果是这样,您需要编辑xml文件的属性,在解决方案资源管理器中右键单击并选择“属性”,然后将其设置为“生成时始终复制”。这将在生成时将xml文件复制到bin/Debug文件夹,这是程序运行的起点。如果没有,则需要将文件路径更改为.././filename.xml,这也可以 注:
如果xml文件是解决方案的一部分,并且程序在运行时找不到该文件,那么这只是问题的解决方案。而且您不能使用绝对路径。您需要按照以下方式执行操作:
using(XmlTextReader reader = new XmlTextReader ("yourfile.xml"))
{
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name);
Console.WriteLine(">");
break;
case XmlNodeType.Text: //Display the text in each element.
Console.WriteLine (reader.Value);
break;
case XmlNodeType. EndElement: //Display the end of the element.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
break;
}
}
}
我假设您想在读入XML文件后解析它?将XML文件作为资源添加到您的项目构建操作=嵌入式资源中。和使用:
public static XmlDocument GetEmbeddedXml(Assembly assembly, string fileName)
{
using (var str = GetEmbeddedFile(assembly, fileName))
{
using (var tr = new XmlTextReader(str))
{
var xml = new XmlDocument();
xml.Load(tr);
return xml;
}
}
}
public static Stream GetEmbeddedFile(Assembly assembly, string fileName)
{
string assemblyName = assembly.GetName().Name;
Assembly a = Assembly.Load(assemblyName);
Stream str = a.GetManifestResourceStream(assemblyName + "." + fileName);
if (str == null)
throw new Exception("Could not locate embedded resource '" + fileName + "' in assembly '" + assemblyName + "'");
return str;
}
是的,我将xml文件添加到我的解决方案中。我现在右键单击了xml文件的属性,并将copy to output directory设置为always。然而,intellisense仍然不会提取文件名,除非它不应该提取文件名?它不会提取文件名,您仍然必须将其作为字符串引用,但现在您可以在不提供任何路径的情况下引用它,因为它将始终位于与输出可执行文件相同的路径中。还有一件事,为了简单起见,我建议使用LINQtoXML来解析XML文件。这是主观上寻找读取xml文件的最简单方法。您可以将其作为嵌入式资源或始终使用副本