如何使用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>
答案 0 :(得分:7)
根据您更新的问题,您可以使用XPath one-liner获取您想要的内容:
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()
都是必要的,以确保您不会修改可枚举的数据。