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

我也会使用,但是使用ie就足够了,DescendantNodes而不是调用。WhereOfType<XComment>()doc.DescendantNodes().OfType<XComment>().Remove()

于 2013-02-05T14:48:29.410 回答