Как я могу прокомментировать одну строку в XML?


123

Это скорее проверка, которую нельзя пропустить.

Есть ли / нет строкового комментария в XML? Итак, один без доводчика, например "//", который использует компилятор.

Я видел, как закомментировать блок тегов в XML? и несколько других обсуждений.

Этот тип комментария был бы практичным, чтобы закомментировать строку, не беспокоясь о ее расположении где-то внизу.


2
XML разработан на основе предположения, что такие инструменты, как редакторы, часто выполняют перенос слов, и поэтому окончания строк являются хрупкими. Было бы плохой идеей, если бы нужно было сохранять окончания строк на случай комментариев.
Michael Kay

2
Разумеется, редакторы просто переносят строки для отображения . Я никогда не слышал, чтобы жесткие символы новой строки добавлялись произвольно в сам файл. Отсутствие строчного комментария - это адская неприятность.
Джон Уайт

Ответы:


147

Нет, нет возможности комментировать строку в XML и автоматически заканчивать комментарий на переносе строки.

В XML есть только одно определение комментария :

'<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

XML запрещает --в комментариях поддерживать совместимость с SGML .


Обходной путь - использовать строковые комментарии ( //) и запустить сценарий для удаления этих комментариев перед использованием (может быть частью одноэтапного процесса сборки). Это делает использование комментариев намного удобнее. (Я использовал эту технику с исходным кодом WiX (установщик для Windows). Для создания установщика потребовался ряд других шагов, так что это был всего лишь еще один шаг для добавления в сценарий / процесс сборки.)
Питер Мортенсен,

20

Как уже говорили другие, в XML не существует легального способа сделать однострочный комментарий, который закомментировал бы несколько строк, но есть способы упростить комментирование сегментов XML.

Если посмотреть на приведенный ниже пример, если вы добавите '>' в первую строку, XmlTag будет раскомментирован. Удалите '>', и он снова закомментирован. Это самый простой из известных мне способов быстро комментировать / раскомментировать XML, не нарушая работу.

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

Дополнительным преимуществом является то, что вы управляете только верхним комментарием, а нижний комментарий может оставаться там вечно. Это нарушает совместимость с SGML, и некоторые синтаксические анализаторы XML не будут использовать его. Пока это не постоянное приспособление в вашем XML, и ваши парсеры принимают его, это не проблема.

Подсветка синтаксиса Stack Overflow и Notepad ++ обрабатывает его как многострочный комментарий, библиотека Boost C ++ рассматривает его как многострочный комментарий, и единственный синтаксический анализатор, который я нашел до сих пор, который ломает, - это тот, который есть в .NET, в частности C #. Поэтому не забудьте сначала проверить, принимают ли ваши инструменты, IDE, библиотеки, язык и т. Д. Его, прежде чем использовать.

Если вам важна совместимость с SGML, просто используйте вместо этого:

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

Добавьте '->' к верхнему комментарию и '-' к нижнему комментарию. Обратной стороной является необходимость каждый раз редактировать нижний комментарий, что, вероятно, упростило бы ввод текста <!--вверху и -->внизу каждый раз.

Я также хочу упомянуть, что другие комментаторы рекомендуют использовать редактор XML, который позволяет вам щелкать правой кнопкой мыши и комментировать / раскомментировать блоки XML, что, вероятно, предпочтительнее причудливых трюков с поиском / заменой (это также само по себе будет хорошим ответом, но я такими инструментами никогда не пользовался, просто хочу убедиться, что информация не потеряна со временем). Мне лично никогда не приходилось иметь дело с XML настолько, чтобы оправдать наличие редактора более привлекательного, чем Notepad ++, так что это полностью зависит от вас.


3
К сожалению, это неверно. В спецификации говорится: для совместимости строка «-» (двойной дефис) НЕ ДОЛЖНА встречаться в комментариях.
kojiro

2
Конечно, это незаконно. В спецификации ясно об этом. Синтаксические анализаторы XML могут следовать закону Постела и позволять вам обходиться без него, но совместимая программа проверки правильности пометит это.
kojiro

4
Как говорит @kojiro, комментарий, содержащий «-», не является правильно сформированным XML. Фраза «Для совместимости» - всего лишь указание редакторами спецификаций причины включения этого ужасного правила: это не значит, что вы можете игнорировать правило, если вас не интересует совместимость. Проголосовать за ответ как неверный.
Michael Kay

10
Вы можете написать его <!-- ->и добавить тире вместо того, чтобы не использовать XML.
kojiro

3
@RyanWH продолжает делать то, что работает для вас, но, похоже, вы зависите от ошибки в используемом парсере XML. Лично я использую IDE (oXygen), которая позволяет мне выбрать фрагмент XML-текста, щелкнуть правой кнопкой мыши и попросить прокомментировать его. Что кажется намного проще, чем ваша техника.
Michael Kay

12

Это то же самое, что и комментарии блока HTML или JavaScript:

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

5

Не ортодоксально, но иногда у меня это работает; установите свой комментарий как другой атрибут:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.