【问题标题】:How do I comment out a block of tags in XML?如何注释掉 XML 中的标记块?
【发布时间】:2011-02-14 23:45:27
【问题描述】:

如何注释掉 XML 中的标记块?

即如何在下面的代码中注释掉 <staticText> 以及其中的所有内容?

  <detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]]></text>
      </staticText>
    </band>
  </detail>

我可以使用&lt;!-- staticText--&gt;,但这仅适用于单个标签(据我所知),例如 Java 和 C 中的 //。我想要更多类似 /** comment **/ 可以在 Java 和 C 中使用的东西,所以我可以注释掉更长的 XML 代码块。

【问题讨论】:

  • 您应该知道 xml 文件中的cmets 是XmlComment 类型的考虑节点。因此,如果您加载 xml 文件,那些 cmets 节点将会被加载,您可以在解析加载的内容时避免它们或过滤它们。
  • XML cmets 类似于 HTML 中的 cmets。

标签: xml comments


【解决方案1】:

您可以在多行中使用这种样式的注释(HTML 中也存在)

<detail>
    <band height="20">
    <!--
      Hello,
         I am a multi-line XML comment
         <staticText>
            <reportElement x="180" y="0" width="200" height="20"/>
            <text><![CDATA[Hello World!]]></text>
          </staticText>
      -->
     </band>
</detail>

【讨论】:

  • 需要注意的是,嵌套 cmets 会有问题。您必须:(1) 删除嵌套注释结束时的尾随“>”,或 (2) 完全删除嵌套的 cmets。
  • 我遇到了与 (1) 相关的问题,因为某些 XML 阅读器(即 CruiseControl.NET)可能无法读取从末尾删除了“>”的嵌套注释。我最终不得不完全移除 cmets。
  • @coderob 实际上,即使 -- 在 XML cmets 中也是不允许的。所以你可能不得不删除整个 -->
  • 在 Android Studio 中,选择块,然后 Ctrl + Slash 对其进行注释(或 Ctrl + Shift + Slash)。
  • 在此类评论中使用-- 可能会遇到问题。如果您需要临时嵌套评论,最好使用- -&gt;。无论如何,在 HTML(xml 的一个子集)中,包括 -- 在内的注释是无效的。 通常你可以侥幸逃脱,但有时会导致问题。所以,我一定要避免在 cmets 中连续出现多个 -,如果我需要临时嵌套评论,我会在 --&gt; 的两个结束 -- 之间放置空格。这避免了 XML 和 HTML 中的随机奇怪错误。
【解决方案2】:

您可以使用不存在的处理指令包装文本,例如:

<detail>
<?ignore
  <band height="20">
    <staticText>
      <reportElement x="180" y="0" width="200" height="20"/>
      <text><![CDATA[Hello World!]]></text>
    </staticText>
  </band>
?>
</detail>

不允许嵌套处理指令,'?>' 结束处理指令(见http://www.w3.org/TR/REC-xml/#sec-pi

【讨论】:

  • 这种方法完全符合我的需要,并且具有甚至可以在内部 cmets 周围工作的额外优势。如果您有任何形式的复杂代码,我会在接受的答案上使用它。
  • 这甚至适用于内部格式错误的 XML。所以这是临时注释掉一个块的一个很好的解决方案。
【解决方案3】:

如果您问,因为您遇到了 &lt;!-- --&gt; 语法错误,很可能是 CDATA 部分(以及 ]]&gt; 部分)位于评论的中间。它应该不会有所作为,但理想世界和现实世界有时可能会有很大的不同(尤其是在 XML 处理方面)。

也尝试更改]]&gt;

  <!--detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]--><!--]></text>
      </staticText>
    </band>
  </detail-->

想到另一件事:如果您的 XML 内容在某处包含两个连字符,则注释会立即结束:

<!-- <a> This is strange -- but true!</a> -->
--------------------------^ comment ends here

这是一个很常见的陷阱。它继承自 SGML 处理 cmets 的方式。 (Read the XML spec on this topic)

【讨论】:

  • 是的...我总是发现 SGML 和 XML 解析 cmets 很难记住所有的怪癖...
  • 非常感谢您提到带有双连字符的奇怪事实 --!我有一个案例,我评论了一条评论。虽然我删除了旧的评论结尾,但它失败了。示例:
  • 要解决双连字符限制,您可以将-- 替换为-&amp;#45;。在大多数情况下,取消注释后它应该可以正常工作。
【解决方案4】:

其实你可以用格式多行或多标签:

<!--
  ...
  ...
  ...
-->

【讨论】:

    【解决方案5】:

    这里要评论,我们必须写如下:

    <!-- Your comment here -->
    

    IntelliJ Idea 和 Eclipse 的快捷方式

    对于 Windows 和 Linux:

    单行注释的快捷方式:

    Ctrl + /

    注释多行的快捷方式:

    Ctrl + Shift + /

    对于 Mac:

    单行注释的快捷方式:

    cmnd + /

    注释多行的快捷方式:

    cmnd + Shift + /

    您必须记住的一件事是,您不能注释 XML 标记的属性。例如:

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        <!--android:text="Hello.."-->
        android:textStyle="bold" />
    

    这里,TextView 是一个 XML 标签,text 是该标签的一个属性。您不能评论 XML 标记的属性。您必须评论完整的 XML 标记。例如:

    <!--<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello.."
        android:textStyle="bold" />-->
    

    【讨论】:

      【解决方案6】:

      您可以使用以下命令轻松注释掉数据:

      <!-- 
       <data>
              <data-field1></data-field1>
              <data-field2></data-field2>
              <data-field3></data-field3>
       </data>
      -->
      

      xml中的注释方法

      【讨论】:

        【解决方案7】:

        XML 语法: &lt;!--Your comment--&gt;

        例如。

           <?xml version = "1.0" encoding = "UTF-8" ?>
           <!--here is your comment :) -->
           <class_list>   
           <student>
           <name></name>
           <grade>A</grade>
           </student>
           </class_list>
        

        XML 注释规则

        Comments cannot appear before XML declaration.
        Comments may appear anywhere in a document.
        Comments must not appear within attribute values.
        Comments cannot be nested inside the other comments.
        

        【讨论】:

          【解决方案8】:

          在 Notepad++ 中,您可以选择几行并使用 CTRL+Q 自动为选定的行生成块 cmets。

          【讨论】:

            【解决方案9】:

            如果您使用的是 Eclipse IDE,您可以通过突出显示 XML 文件中的行并按 Ctrl+Shift+c 来注释掉它们。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2014-12-11
              • 2012-01-24
              • 1970-01-01
              • 2016-01-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多