如何在 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 规范 )