问题
I have an xml file like below,
<configuration>
<property>
<name>name</name>
<value>dinesh</value>
</property>
<property>
<name>city</name>
<value>Delhi</value>
</property>
</configuration>
My requirement is I need to comment / uncomment properties programmatically at runtime based on property's name like below;
<configuration>
<!-- <property>
<name>name</name>
<value>dinesh</value>
</property> -->
<property>
<name>city</name>
<value>Delhi</value>
</property>
</configuration>
Is there any direct way to achive this via XDocument / XmlDocument traversal? I just gone through code like below from this question,
XmlComment DirCom = doc.CreateComment(XmlElementName.OuterXml);
doc.InsertAfter(DirCom, XmlElementName);
doc.RemoveChild(XmlElementName)
Is the above code usage a right approach?
回答1:
You can do it easily with 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);
Which outputs:
<configuration>
<!--<property>
<name>name</name>
<value>dinesh</value>
</property>-->
<property>
<name>city</name>
<value>Delhi</value>
</property>
</configuration>
来源:https://stackoverflow.com/questions/30454364/comment-xml-elements-programmatically