代码之家  ›  专栏  ›  技术社区  ›  Ananth

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

  •  6
  • Ananth  · 技术社区  · 16 年前

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

    relTableCommentedNode=xdoc.createNode(xmlnodeType.comment,“relTableCommented”,“np”);

    取消对此节点的注释的最佳方法是什么?我可以根据我用来创建节点的名称来标识这个节点吗(reltablecommented)?

    这是注释节点 <代码> >/P> < PRE> &!--<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”> <topicrf href=“concepts\about\cannedgoods.dita”copy to=“concepts\about\cannedgoods.dita”class=“-map/topicrf”xmlns:dctm=“http://www.documentum.com”> </topicref> </relcell> &Relord≫ </reltable>-->

    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="concepts\about_cannedgoods.dita" copy-to="concepts\about_cannedgoods.dita" class="- map/topicref " xmlns:dctm="http://www.documentum.com">
            </topicref>
          </relcell>      
        </relrow>
      </reltable> -->
    

    1 回复  |  直到 8 年前
        1
  •  9
  •   Chris Taylor    16 年前

    据我所知,使用xmldocument,没有直接的方法可以做到这一点。你需要做如下的事情

    1. 获取注释节点的值
    2. 使用步骤1中的值创建新的xmlnode
    3. 删除注释节点
    4. 将步骤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);
      }
    
    推荐文章