以编程方式注释xml元素

本文关键字:xml 元素 注释 方式 编程 | 更新日期: 2023-09-27 17:50:42

我有一个像下面这样的xml文件,

<configuration>
    <property>
      <name>name</name>
      <value>dinesh</value>
    </property>
    <property>
      <name>city</name>
      <value>Delhi</value>
    </property>
</configuration>

我的要求是我需要在运行时基于属性的名称编程地注释/取消注释属性,如下所示;

<configuration>
    <!-- <property>
      <name>name</name>
      <value>dinesh</value>
    </property> -->
    <property>
      <name>city</name>
      <value>Delhi</value>
    </property>
</configuration>

是否有任何直接的方法来实现这一点,通过XDocument/XmlDocument遍历?我刚刚从这个问题开始执行了如下代码,

XmlComment DirCom = doc.CreateComment(XmlElementName.OuterXml);
doc.InsertAfter(DirCom, XmlElementName);    
doc.RemoveChild(XmlElementName)

上面的代码使用是正确的方法吗?

以编程方式注释xml元素

使用XDocument可以很容易地做到这一点

var xDocument = XDocument.Parse(@"<configuration>
                                    <property>
                                      <name>name</name>
                                      <value>dinesh</value>
                                    </property>
                                    <property>
                                      <name>city</name>
                                      <value>Delhi</value>
                                    </property>
                                </configuration>");
var firstPropertyElement = xDocument
    .Descendants("property")
    .First();//Find your element
var xComment = new XComment(firstPropertyElement.ToString());//Create comment
firstPropertyElement.ReplaceWith(xComment);//Replace the element with comment 
Console.WriteLine(xDocument);
输出:

<configuration>
  <!--<property>
  <name>name</name>
  <value>dinesh</value>
</property>-->
  <property>
    <name>city</name>
    <value>Delhi</value>
  </property>
</configuration>