如何在XML中注释一行?

如何在XML中注释一行?,xml,xml-comments,Xml,Xml Comments,这是一个验证,只是为了不被遗漏 XML中是否有行注释?因此,一个没有闭合符的函数,如编译器使用的“/” 我看到了一些其他的讨论 这种类型的注释很实用,可以注释掉一行,而不必麻烦它下面的某个地方。不,没有办法用XML注释一行,并让注释在换行符上自动结束 XML只有: “” XML禁止在要维护的注释中使用-。只包括块注释。正如其他人所说,在XML中,没有合法的方法进行注释多行的单行注释,但是,有一些方法可以使注释XML段更容易 看看下面的示例,如果在第一行添加“>”,XmlTag将被取消注释。删除

这是一个验证,只是为了不被遗漏

XML中是否有行注释?因此,一个没有闭合符的函数,如编译器使用的“/”

我看到了一些其他的讨论


这种类型的注释很实用,可以注释掉一行,而不必麻烦它下面的某个地方。

不,没有办法用XML注释一行,并让注释在换行符上自动结束

XML只有:

“”

XML禁止在要维护的注释中使用
-

只包括块注释。

正如其他人所说,在XML中,没有合法的方法进行注释多行的单行注释,但是,有一些方法可以使注释XML段更容易

看看下面的示例,如果在第一行添加“>”,XmlTag将被取消注释。删除“>”并再次将其注释掉。这是我见过的在不破坏东西的情况下快速注释/取消注释XML的最简单方法

<!-- --
<XmlTag variable="0" />
<!-- -->

另外一个好处是,您只需要操纵顶部的注释,而底部的注释可以永远坐在那里。这破坏了与的兼容性,一些XML解析器会对其进行呕吐。只要这不是XML中的一个永久固定装置,并且解析器接受它,它就不是一个真正的问题

StackOverflow和语法highlighter将其视为多行注释,C++的库将其视为多行注释,到目前为止,我发现的唯一一个中断的解析器是.NET中的解析器,特别是C#。所以,在使用它之前,请确保首先测试您的工具、IDE、库、语言等是否接受它

如果您关心SGML兼容性,只需使用以下选项:

<!-- -
<XmlTag variable="0" />
<!- -->

在顶部注释中添加“->”,在底部注释中添加“-”。缺点是每次都必须编辑底部的注释,这可能会使每次只在底部键入
更容易


我还想提到,其他评论者建议使用XML编辑器,它允许您右键单击并注释/取消注释XML块,这可能比花哨的查找/替换技巧更可取(这本身也是一个很好的答案,但我从未使用过此类工具。我只想确保信息不会随着时间的推移而丢失). 就我个人而言,我从来没有处理过足够多的XML来证明有一个比Notepad++更喜欢的编辑器是合理的,所以这完全取决于你。

不是正统的,但它有时对我有用;将注释设置为另一个属性:

<node usefulAttr="foo" comment="Your comment here..."/>

它与HTML或JavaScript块注释相同:

<!-- The to-be-commented XML block goes here. -->


不幸的是,这是错误的。表示,为了兼容性,字符串“-”(双连字符)不能出现在注释中。当然,这是不合法的。规格是明确的。XML解析器可能会遵循Postel定律,让您逍遥法外,但是一个兼容的良好格式检查器会对其进行标记。正如@kojiro所说,包含“-”的注释不是良好格式的XML。关于“兼容性”的短语仅仅是规范编辑器说明了他们加入这个可怕规则的原因:这并不意味着如果你对兼容性不感兴趣,你可以忽略这个规则。对答案投反对票,因为它是错误的。你可以写它
@RyanWH继续做适合你的事情,但你似乎依赖于你正在使用的XML解析器中的一个bug。就我个人而言,我使用一个IDE(氧气),它允许我选择一段XML文本,右键单击,并要求注释掉它。这似乎比您的技术简单得多。XML的设计假设是编辑器等工具通常会执行单词包装,因此行尾是脆弱的。如果为了防止评论而必须保留行尾,这将是一个坏主意。当然,编辑只会为了显示而包装行。我从来都不知道硬换行可以任意添加到文件本身。没有行注释真是讨厌透了。解决方法是使用行注释(
/
)并在使用前运行脚本删除这些注释(可以是单步构建过程的一部分)。它提供了一种更方便的使用注释的方法。(我在source(Windows安装工具)中使用了这种技术。构建安装程序还需要许多其他步骤,因此这只是添加到构建脚本/过程中的又一个步骤。)
<!-- The to-be-commented XML block goes here. -->