2013-02-05 4 views
6

XElementからすべてのXCommentを削除してから、クライアントに送信したいと考えていました。それが動作しないいくつかの理由とremoveMe.Count()= 0XElementからXCommentsを削除するには?

任意の考えから

{ 

    // ... 

    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ファイルは、あなたが代わりにDescendantsDescendantNodesを使用する必要があること

<user> 
    <name> Elen </name> 

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

     <!-- more settings --> 

    </userSettings> 

</user> 

答えて

9

などの気にいらないことができます。

DescendantsXElementのインスタンスを返します。したがって、基本的にXMLのタグのみが返されます。
DescendantNodesは、コメントを含むXNodeのインスタンスを返します。

doc.DescendantNodes().Where(x => x.NodeType == XmlNodeType.Comment).Remove(); 
+0

ありがとうございました。魅力のように... –

6

私はまたDescendantNodesを使用する代わりに、それはOfType<XComment>()すなわちdoc.DescendantNodes().OfType<XComment>().Remove()を使用することで十分Whereコールのでしょう。

+0

余分なチップをありがとうございます。 –

関連する問題