如何注释掉XML标签块?


795

如何注释掉XML标签块?

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

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

我可以使用,<!-- staticText-->但这仅用于单个标记(据我所知),就像//在Java和C中一样。我想要更像/** comment **/在Java和C中可以使用的方式,因此可以注释掉更长的XML代码块。


11
您应该知道xml文件中的注释视为XmlComment类型的节点。因此,如果您加载xml文件,则将要加载那些注释节点,并且可以在解析所加载的内容时避免它们或对其进行过滤。
El Bayames

XML注释类似于HTML中的注释。
Somnath Muluk

Answers:


1135

您可以在多行中使用该注释样式(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>

59
需要注意的一个问题是,嵌套注释会出现问题。您将必须:(1)删除嵌套注释结尾处的尾部“>”,或(2)完全删除嵌套注释。
不可否认的是

1
我遇到了(1)的问题,因为某些XML读取器(即CruiseControl.NET)可能无法读取嵌套的注释,该注释的末尾已删除“>”。我最终不得不完全删除评论。
不可否认的是

14
@coderob实际上,XML注释中甚至不允许使用。因此,您可能必须删除整个->
0fnt 2014年

在Android Studio中,选择该块,然后按Ctrl +斜杠对其进行注释(或Ctrl + Shift +斜杠)。
Kamran Bigdely

1
--在这种类型的注释中使用时可能会遇到问题。- ->如果您需要临时嵌套评论,则最好使用。无论如何,在HTML中(xml的子集),--在注释内部包括无效。 通常您可以摆脱它,但有时会引起问题。所以,我一定要避开多的-注释中的行,如果我需要临时窝评论,我会放置2日收盘之间的空间---->。这样可以避免XML和HTML中的随机奇数错误。
SherylHohman '18

169

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

<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


11
这种方法完全可以满足我的需要,并且具有即使围绕内部注释也可以工作的优点。如果您有任何形式的复杂代码,我会在可接受的答案上使用它。
肖恩·布兰克肖

卡巴斯基(Kasper)
希瓦·克里希纳·

2
这甚至可以与内部格式错误的XML一起使用。因此,这是暂时注释掉一个块的绝佳解决方案。
最多

146

如果您询问,因为<!-- -->语法有误,很可能是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
是的...我总是发现很难对SGML和XML的注释进行语法分析,
以至于

1
非常感谢您提到带有双连字符的奇怪事实-!我有一个案例,我发表了评论。尽管我删除了旧的评论结尾,但失败了。示例:<!-... <code> <!-旧评论</ code> ...->
dwettstein

要解决双连字符限制,您可以替换---&#45;。在大多数情况下,取消注释后,它应该工作相同。
mik


25

在这里发表评论,我们必须这样写:

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

11

您可以使用以下方法轻松注释掉数据:

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

xml中的注释方法。


1

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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.