使用C#查找.csproj文件中的节点

时间:2013-03-18 16:16:17

标签: c# xml

我在尝试从我作为XDocument读入的.csproj文件中选择一个特定节点时遇到了麻烦。

XDocument xmldoc = XDocument.Load("The full path of the .csproj file");

这会将.csproj文件加载到XDocument中而不会出现问题。我已尝试DescendantsElements等尝试获取TheNodeIWant及其值,但无法弄清楚为什么我一直没有得到结果。

<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
            <TheNodeIWant>The String I Want </TheNodeIWant>
        </PropertyGroup>
        <PropertyGroup>
        .......
        </PropertyGroup>
    </Project>

如何选择TheNodeIWant并检索其值?

3 个答案:

答案 0 :(得分:6)

请参阅https://stackoverflow.com/a/4171468/1301310

XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(@"c:\test.txt");

XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode node = xmldoc.SelectSingleNode("//msbld:TheNodeIWant", ns);

if (node != null)
{
    MessageBox.Show(node.InnerText);
}

答案 1 :(得分:4)

您可以使用MSBuild Project class更好地使用代码中的csproj

答案 2 :(得分:1)

我建议使用Xpath在csproj文件中导航。