7

クライアントに送信する前に、XElement からすべての XComment を削除したいと考えていました。

何らかの理由で機能せず、removeMe.Count()=0

何かご意見は?

{

   // ...

   myXml = XElement.Load(myPath);
   var removeMe=myXml.Descendants().Where(x => x.NodeType == XmlNodeType.Comment);
   removeMe.Count();        // this is 0 , (not what i was expected)
   removeMe.Remove();

   //...

   string myResponseStr = myXml.ToString(SaveOptions.None);
   context.Response.ContentType = "text/plain";
   context.Response.Write(myResponseStr);
 }

xmlファイルはそのようなものになる可能性があります

 <user>   
    <name> Elen </name>

    <userSettings>
       <color> blue  </color>                <!-- the theme color of the page -->
       <layout>  horizontal  </layout>      <!-- layout choise -->

       <!-- more settings -->

     </userSettings>

 </user>
4

2 に答える 2

10

DescendantNodesの代わりに使用する必要がありますDescendants

Descendantsインスタンスを返すXElementため、基本的には XML のタグのみを返します。コメントを含むインスタンスを
DescendantNodes返します。XNode

doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove();
于 2013-02-05T14:22:40.787 に答える
9

私も使用しますDescendantNodesが、呼び出しの代わりにieWhereを使用するだけで十分です。OfType<XComment>()doc.DescendantNodes().OfType<XComment>().Remove()

于 2013-02-05T14:48:29.410 に答える