c# - 如何使用 C# 从 xml 文件中删除所有空元素?

标签 c# xml

<分区>

如何使用 C# 从 XML 文件中删除所有空元素?

例如:

输入

<Person>
  <PersonDetails>
    <Name>Some Name</Name>
    <Address>
      <Street>Some Street</Street>
      <City>Some City</City>
      <Zip/>
    </Address>
 </PersonDetails>
 <PersonDetails>
    <Name>Some Name</Name>
    <Address/>
 </PersonDetails>
 <PersonDetails/>
</Person>

输出

<Person>
  <PersonDetails>
    <Name>Some Name</Name>
    <Address>
      <Street>Some Street</Street>
      <City>Some City</City>
    </Address>
 </PersonDetails>
 <PersonDetails>
    <Name>Some Name</Name>
 </PersonDetails>
</Person>

最佳答案

根据您更新的问题,您可以只使用 XPath 一行代码来获得您想要的东西:

var doc = XElement.Parse(source);  // or XElement.Load(filename) if coming from a file   

doc.XPathSelectElements("//*[string-length() = 0]").ToList().Remove();

doc.Save(filename)                 // or doc.ToString() if you want the string output

如果您不想使用 XPath,您可以使用 Descendants() 和 LINQ:

doc.Descendants().ToList().Where(d => d.Value.Length == 0).Remove();

在这两种情况下,ToList() 都是必要的,以确保您不会就地修改枚举。

关于c# - 如何使用 C# 从 xml 文件中删除所有空元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070376/

相关文章:

c# - 加载函数期间的联合提要 XML 异常

xml - 如何在 xml 文件中搜索文本并使用 qml 更改它?

c# 如何从 XML 文档中获取 targetNamespace

c# - 让asp :calendar cell clickable,不只是数字

c# - .net 本地程序集加载因 CAS 策略失败

java - 从 XML 中读取有限数量的元素

python - ElementTree 使用 AND 和 'parent' 搜索节点 (XPATH) 的更好方法

c# - WSO2 IS 5.0.0 - 将 Base64 变体更改为 (RFC 6920)

c# - 为什么我们在调用方法时需要使用 out 关键字

c# - 删除 Split View中的单选按钮图标 Windows 通用应用程序