尝试对XML文档进行简单的解析。取出下面两个PropertyGroup的最简单方法是什么?
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1
</PropertyGroup>
<PropertyGroup xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
</PropertyGroup>
</Project>
我一直在尝试使用XElement.Elements(XName),但为了这样做,我需要在PropertyGroup前加上xmlns。问题是我不关心名称空间,如果将来发生变化,我仍然希望检索所有PropertyGroups。
var xml = XElement.Load(fileNameWithPath);
var nameSpace = xml.GetDefaultNamespace();
var propertyGroups= xml.Elements(nameSpace + "PropertyGroup");
您是否可以改进此代码,以便我不需要使用nameSpace作为前缀?我知道我基本上可以重新实现Elements方法,但我希望有一些方法来传递通配符名称空间?
谢谢,
加文
答案 0 :(得分:10)
这对你有用吗?
xml.Elements().Where(e => e.Name.LocalName == "PropertyGroup")