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

How do I comment out a block of tags in XML?

提问人:Jonas 提问时间:5/3/2010 最后编辑:Jonas 更新时间:11/13/2023 访问量:2108182

问:

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

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

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

我可以使用,但这只是针对单个标签(据我所知),例如在 Java 和 C 中。我想要更多的东西,比如如何在 Java 和 C 中使用,这样我就可以注释掉更长的 XML 代码块。<!-- staticText-->///** comment **/

XML 注释

评论

13赞 El Bayames 7/18/2013
您应该知道,xml 文件中的注释被视为 XmlComment 类型的节点。因此,如果您加载 xml 文件,这些注释节点将被加载,在解析加载的内容时您可以避免它们或过滤它们。
0赞 Somnath Muluk 8/22/2016
XML 注释类似于 HTML 中的注释。

答:

1283赞 Noon Silk 5/3/2010 #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>

评论

70赞 undeniablyrob 3/7/2013
需要注意的是,嵌套注释会遇到问题。您必须:(1) 删除嵌套评论结束时的尾随“>”,或 (2) 完全删除嵌套注释。
1赞 undeniablyrob 3/7/2013
我在 (1) 中遇到了问题,因为一些 XML 阅读器(即 CruiseControl.NET)可能在读取从末尾删除其“>”的嵌套注释时遇到问题。我最终不得不完全删除评论。
17赞 0fnt 9/30/2014
@coderob 实际上,XML 注释中甚至不允许使用 -- 。因此,您可能需要删除整个 -->
0赞 Kamran Bigdely 7/21/2016
在 Android Studio 中,选择块,然后按 Ctrl + 斜杠对其进行注释(或按 Ctrl + Shift + 斜杠)。
1赞 SherylHohman 12/9/2018
在这种类型的评论中使用时可能会遇到问题。如果您需要临时嵌套注释,最好使用。无论如何,在 HTML 中(xml 的子集),包含在注释中是无效的。通常你可以侥幸逃脱,但有时确实会引起问题。因此,我一定要避免在评论中连续出现多个,如果我需要临时嵌套注释,我会在 .这避免了 XML 和 HTML 中随机的奇怪错误。--- ->------->
56赞 Delan Azabani 5/3/2010 #2

实际上,您可以将 <!--...--> 格式与多行或标签一起使用:

<!--
  ...
  ...
  ...
-->
152赞 Boldewyn 5/3/2010 #3

如果你问,因为你的语法有错误,很可能是 CDATA 部分(以及部分),然后位于注释的中间。这应该不会有什么不同,但理想世界和现实世界有时可能会有很大的不同(尤其是在 XML 处理方面)。<!-- -->]]>

也尝试更改 :]]>

  <!--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 处理评论的方式。(阅读有关此主题的 XML 规范)

评论

1赞 Delan Azabani 5/3/2010
是的。。。我总是发现 SGML 和 XML 解析注释很难记住所有的怪癖......
1赞 dwettstein 6/3/2015
非常感谢您提到双连字符的奇怪事实--!我有一个案例,我评论了一条评论。虽然我删除了旧的评论结尾,但它失败了。示例:<!-- ...<代码><!--旧评论</代码>... -->
1赞 mik 2/7/2019
要解决双连字符限制,可以将 替换为 。在大多数情况下,取消注释后它应该工作相同。---&#45;
213赞 Kasper van den Berg 2/2/2013 #4

您可以使用不存在的处理指令来换行文本,例如:

<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)

评论

16赞 Sean Branchaw 3/9/2016
这种方法完全按照我的需要工作,并且具有额外的优势,甚至可以围绕内部评论工作。如果您有任何形式的复杂代码,我会在公认的答案上使用它。
4赞 Max 8/29/2017
这甚至适用于内部格式错误的 XML。因此,这是暂时注释掉块的绝佳解决方案。
0赞 Eric Duminil 6/14/2023
好。它与多行不同,它被一些源格式化程序(例如 Eclipse)单独保留<!-- -->
13赞 svg 5/22/2013 #5

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

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

XML 中的注释方法。

37赞 Avijit Karmakar 3/11/2016 #6

在这里,为了发表评论,我们必须写如下:

<!-- 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" />

此处,是一个 XML 标记,是该标记的一个属性。不能对 XML 标记的属性进行注释。您必须注释完整的 XML 标记。例如:TextViewtext

<!--<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello.."
    android:textStyle="bold" />-->
11赞 Sumit 5/7/2020 #7

XML 语法:<!--Your comment-->

例如。

   <?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.
1赞 Michał Lipok 12/31/2020 #8

在Notepad++中,您可以选择几行并使用CTRL+Q,这将自动为所选行进行块注释。

评论

0赞 Michael Kay 9/19/2023
在 oXygen 中,它是 Mac 上的 CMD+SHIFT+M。大多数 XML 编辑器都应该提供类似的东西。
-2赞 minTwin 10/15/2021 #9

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