如何使用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>
Run Code Online (Sandbox Code Playgroud)
产量
<Person>
<PersonDetails>
<Name>Some Name</Name>
<Address>
<Street>Some Street</Street>
<City>Some City</City>
</Address>
</PersonDetails>
<PersonDetails>
<Name>Some Name</Name>
</PersonDetails>
</Person>
Run Code Online (Sandbox Code Playgroud)
根据您更新的问题,您可以使用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
Run Code Online (Sandbox Code Playgroud)
如果您不想使用XPath,可以使用Descendants()和LINQ:
doc.Descendants().ToList().Where(d => d.Value.Length == 0).Remove();
Run Code Online (Sandbox Code Playgroud)
在ToList()这两种情况下是必要的,以确保您不到位修改枚举.