【问题标题】:Using the XElement.Elements method, can I find elements with wildcard namespace but the same name?使用 XElement.Elements 方法,我可以找到具有通配符命名空间但名称相同的元素吗?
【发布时间】:2010-04-22 14:36:42
【问题描述】:

尝试对 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");

您能否改进此代码以使我不需要在前面添加名称空间?我知道我基本上可以重新实现 Elements 方法,但我希望有某种方法可以传递通配符命名空间?

谢谢,

加文

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    这对你有用吗?

    xml.Elements().Where(e => e.Name.LocalName == "PropertyGroup")
    

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      相关资源
      最近更新 更多