使用C#取消注释XML文件中的注释节点

我有一个XML文件,其中有一个被注释掉的节点。 我使用语法创建了这个节点 –

relTableCommentedNode = xDoc.CreateNode(XmlNodeType.Comment,“RELTABLECOMMENTED”,“np”);

取消注释此节点的最佳方法是什么? 我可以根据用于创建节点的名称(RELTABLECOMMENTED)来识别此节点吗?

这是注释节点

 <!--           --> 

据我所知,使用XmlDocument,没有直接的方法来做到这一点。 您需要执行以下操作

  1. 获取注释节点的值
  2. 使用步骤1中的值创建一个新的XmlNode
  3. 删除注释节点
  4. 将步骤2中的新节点添加到DOM树中

下面是一个示例,其中包含XML的略微简化版本,并在查找正确注释节点的注释中解决您的问题。 请注意,我查询所有注释节点,显然您可以更具体,并查询您感兴趣的文档部分。

  string xml = @"    "; XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(xml); XmlNodeList commentedNodes = xdoc.SelectNodes("//comment()"); var commentNode = (from comment in commentedNodes.Cast() where comment.Value.Contains("class='- map '") select comment).FirstOrDefault(); if (commentNode != null) { XmlReader nodeReader = XmlReader.Create(new StringReader(commentNode.Value)); XmlNode newNode = xdoc.ReadNode(nodeReader); commentNode.ParentNode.ReplaceChild(newNode, commentNode); }