如何将XElement转换为XComment(C#)

时间:2014-12-15 08:44:00

标签: c# linq-to-xml xelement

我的第一个问题是......

我正在解析xml文件(使用c#作为Xdocument)并尝试禁用某些xElement对象。 标准方式(我工作的地方)是使它们显示为xComment。

除了将其解析为文本文件之外,我无法找到任何方法。

结果应如下所示:

<EnabledElement>ABC</EnabledElement>
<!-- DisabledElement></DisabledElement-->

1 个答案:

答案 0 :(得分:4)

嗯,它并不像你要求的那样相当,但是它确实用注释版本替换了一个元素:

using System;
using System.Xml.Linq; 

public class Test
{
    static void Main()
    {
        var doc = new XDocument(
            new XElement("root",
                new XElement("value1", "This is a value"),
                new XElement("value2", "This is another value")));

        Console.WriteLine(doc);

        XElement value2 = doc.Root.Element("value2");
        value2.ReplaceWith(new XComment(value2.ToString()));
        Console.WriteLine(doc);
    }
}

输出:

<root>
  <value1>This is a value</value1>
  <value2>This is another value</value2>
</root>

<root>
  <value1>This is a value</value1>
  <!--<value2>This is another value</value2>-->
</root>

如果确实希望评论开始和结束<>替换元素中的评论,您可以使用:

value2.ReplaceWith(new XComment(value2.ToString().Trim('<', '>')));

......但我个人不会。