c# - 使用 XElement.Elements 方法,我可以找到具有通配符命名空间但名称相同的元素吗?

标签 c# xml

尝试对 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。问题是我不关心 namespace ,如果将来它发生变化,我仍然希望检索所有 PropertyGroup。

 var xml = XElement.Load(fileNameWithPath);
 var nameSpace = xml.GetDefaultNamespace();

 var propertyGroups= xml.Elements(nameSpace + "PropertyGroup");

你能改进这段代码,这样我就不需要在前面添加 nameSpace 了吗?我知道我基本上可以重新实现 Elements 方法,但我希望有某种方法可以传递通配符命名空间?

谢谢,

加文

最佳答案

这对你有用吗?

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

关于c# - 使用 XElement.Elements 方法,我可以找到具有通配符命名空间但名称相同的元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691750/

相关文章:

python - 如何获取 lxml 元素的字符串转储

java - 图层列表上的右下角为黑色

c# - 将 Id 或其他属性添加到 ASP.NET MVC 3 Html Helper Textbox

c# - IComparable<T>.CompareTo 与 Sort 中的 null 进行比较

c# - 更改派生类中属性的 xml 描述

c# - 如何在 Web API 响应中排除 Xml 序列化中的属性名称

XMLStarlet 不删除元素

c# - 在两个参数之间切换值 [最佳实践/更好的代码]

c# - BackgroundWorker Completed 似乎没有在主线程中运行?

javascript - Web API 在 JSON 调用上返回 XML