1

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>
4

1 に答える 1

7

更新された質問に基づいて、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

Descendants()XPath を使用したくない場合は、LINQを使用できます。

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

どちらのToList()場合も、列挙可能なものを適切に変更しないようにするために必要です。

于 2012-06-17T09:53:14.127 に答える