我已经阅读了other question并将答案应用于我的代码,但是仍然无法正常工作。
我使用xml读取csproj文件,以在其中读取/写入某些内容。
This是我的csproject文件,如果有人关心的话!
我的代码:
static void Main(string[] args)
{
string file = @"D:\Project\svn_longnx\LearnSvnRevision\ConsoleApp1\WindowsFormsApp1\WindowsFormsApp1.csproj";
XmlDocument xdoc = new XmlDocument();
xdoc.Load(file);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(xdoc.NameTable);
nsmgr.AddNamespace("default", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlElement root = xdoc.DocumentElement;
XmlNode node = root.SelectSingleNode("Project/PropertyGroup/ApplicationVersion",nsmgr);
Console.WriteLine(node.Value);
}
此虚拟代码失败:
static void Main(string[] args)
{
string file = @"D:\Project\svn_longnx\LearnSvnRevision\ConsoleApp1\WindowsFormsApp1\WindowsFormsApp1.csproj";
XmlDocument xdoc = new XmlDocument();
xdoc.Load(file);
XmlElement root = xdoc.DocumentElement;
XmlNode node = root.SelectSingleNode("Project/PropertyGroup/ApplicationVersion");
Console.WriteLine(node.Value);
}
答案 0 :(得分:1)
使用XDocument
和关联对象比旧的XmlDocument
位容易得多。另外,您可能会因为名称空间而倒下。相反,请尝试以下代码:
var doc = XDocument.Load(@"D:\Project\svn_longnx\Lear...\WindowsFormsApp1.csproj");
var ns = XNamespace.Get("http://schemas.microsoft.com/developer/msbuild/2003");
var applicationVersionElements = doc.Element(ns + "Project")
.Descendants(ns + "PropertyGroup")
.Descendants(ns + "ApplicationVersion");
foreach (var element in applicationVersionElements)
{
Console.WriteLine(element.Name);
}
这只是作为获取特定元素以演示其易用性的一个示例。
注意,您可能需要添加using System.Xml.Linq;