协慌网

登录 贡献 社区

如何在 XML 中注释掉一个标记块?

如何在 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--><!-- staticText-->适用于单个标签(就像我所知道的那样),比如//在 Java 和 C 中。我想要更像/** comment **/可以用于 Java 和 C,所以我可以注释掉更长的 XML 代码块。

答案

您可以跨多行使用该样式的注释(也存在于 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>

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

<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

如果你问,因为你的<!-- -->语法有错误,那很可能是 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 规范