我尝试从 Visual Studio *.csproj 文件中查询元素。我创建了一个简短的示例来说明问题:
// Working
string xml1 = @"<Project ToolsVersion='4.0'>
<ItemGroup Label='Usings'>
<Reference Include='System' />
<Reference Include='System.Xml' />
</ItemGroup>
</Project>";
// Not working
string xml2 = @"<Project ToolsVersion='4.0' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
<ItemGroup Label='Usings'>
<Reference Include='System' />
<Reference Include='System.Xml' />
</ItemGroup>
</Project>";
XDocument doc = XDocument.Parse(xml2);
foreach (XElement element in doc.Descendants("ItemGroup"))
{
Console.WriteLine(element);
}
字符串 xml1 工作正常, xml2 不返回任何内容。这些字符串之间的唯一区别是文档根目录中的 xmlns 属性。
如何查询包含 xmlns 属性的文档?为什么当 xml 文档包含 xmlns 属性时会出现问题?