加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:29:01 所属栏目:百科 来源:网络整理
导读:我有一个 XML文件,其中有一个被注释掉的节点.我使用语法创建了这个节点 – relTableCommentedNode = xDoc.CreateNode(XmlNodeType.Comment,“RELTABLECOMMENTED”,“np”); 取消注释此节点的最佳方法是什么?我可以根据用于创建节点的名称(RELTABLECOMMENTED
我有一个 XML文件,其中有一个被注释掉的节点.我使用语法创建了这个节点 –

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

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

这是注释节点

 
<!--<reltable toc="no" class="- map/reltable ">
    <relheader class="- map/relheader ">
      <relcolspec type="concept" class="- map/relcolspec ">      
    </relheader>
    <relrow class="- map/relrow ">
      <relcell class="- map/relcell ">
        <topicref href="conceptsabout_cannedgoods.dita" copy-to="conceptsabout_cannedgoods.dita" class="- map/topicref " xmlns:dctm="http://www.documentum.com">
        </topicref>
      </relcell>      
    </relrow>
  </reltable> -->

解决方法

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

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

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

string xml = @"
    <root>
      <!--<reltable toc='no' class='- map/reltable '>
      <relheader class='- map/relheader '>
        <relcolspec type='concept' class='- map/relcolspec '/>      
      </relheader>         
    </reltable> -->

    <!--<reltable toc='no' class='- map '>
      <relheader class='- map/relheader '>
        <relcolspec type='concept' class='- map/relcolspec '/>      
      </relheader>          
    </reltable> -->
  </root>";

  XmlDocument xdoc = new XmlDocument();
  xdoc.LoadXml(xml);

  XmlNodeList commentedNodes = xdoc.SelectNodes("//comment()");
  var commentNode = (from comment in commentedNodes.Cast<XmlNode>()
              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);
  }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读