XML中的嵌套注释?

Posted

技术标签:

【中文标题】XML中的嵌套注释?【英文标题】:Nested comments in XML? 【发布时间】:2010-11-22 10:16:35 【问题描述】:

这些嵌套的 cmets 是否允许在 XML 文件中使用?

<!-- Making only one observation attempting to correct the error code -->
<!-- <component>
       <!-- Result observation template -->
            <!-- <id root="2.16.840.1.113883.19.5.10" extension="103220"/>
     </component> -->

【问题讨论】:

...想知道为什么没有人提到使用 CDATA 作为 hacky 块评论... 【参考方案1】:

不,字符串-- 不允许出现在 XML 的 cmets 中。因此,您在另一条评论中显示 -- 的事实将导致失败。

并且尝试发布该答案也破坏了文本输入解析;)

如需进一步证明,请查看 W3C 规范:

http://www.w3.org/TR/2008/REC-xml-20081126/#sec-comments

短语

为了兼容性,字符串“--”(双连字符)不得出现在 cmets 中。]

出现在 XML cmets 部分的第一段中。

【讨论】:

System.Xml.XmlException: This is an invalid comment syntax. 这是为了保证与SGML的兼容性。 @Brent Nash 那么如何注释掉一个包含 cmets 的大块呢? @BrentNash 我相信你的话,这只是为了确保向后兼容性:)。尽管如此,对于 90 年代设计的格式,不允许嵌套 cmets 并不酷。【参考方案2】:

正如How do I comment out a block of tags in XML? 中所说,您可以尝试使用不存在的处理指令来包装您的代码,例如:

<?ignore
<component>
       <!-- Result observation template -->
            <!-- <id root="2.16.840.1.113883.19.5.10" extension="103220"/>
     </component> 
?>

【讨论】:

这对于表现不佳的 NuGet 包通过添加自己的元素和数十个 cmets 破坏我精心策划的 web.config 文件的情况非常有帮助!【参考方案3】:

一句话——没有。

第一个遇到的结束评论标记将,呃...结束评论,其余部分看起来有点不愉快。

【讨论】:

【参考方案4】:

你不能。 -- 开始和终止评论。这使得嵌套它们变得不可能。

【讨论】:

【参考方案5】:

Notepad++ 和 XML Tools 插件可以做到这一点。

选择一个 xml 块并在 xml 工具子菜单上选择“评论选择”。

每个现有的“内部 xml 注释”都将被更改,使其看起来像这样

  <!1** inner xml comment **1>

如果你以这种方式添加另一个外部注释,那些原来的内部 cmets 将被进一步更改为

  <!2** inner xml comment **2>

【讨论】:

以上是关于XML中的嵌套注释?的主要内容,如果未能解决你的问题,请参考以下文章

xml文件的注释

MongoDB 中单个父注释中的嵌套(子)注释

protobuf-net 嵌套类支持?订单注释?

java中的嵌套多行注释

C++ 中的嵌套注释

Django REST Framework 序列化程序中的嵌套注释字段