Як я можу коментувати один рядок у XML?


123

Це швидше перевірка, щоб її не пропустити.

Чи немає у XML рядка-коментаря? Отже, один без ближче, як, наприклад, "//", який використовує компілятор.

Я бачив Як я коментую блок тегів у XML? та кілька інших дискусій.

Цей тип коментаря було б практично коментувати рядок, не турбуючи її ближче десь вниз.


2
XML розроблений на основі припущення, що такі інструменти, як редактори, часто виконують обробку слів, і тому закінчення рядків є крихкими. Було б погано, якби закінчення рядків потрібно було зберегти лише на випадок коментарів.
Майкл Кей

2
Напевно редактори обгортають лише лінії для відображення . Я ніколи не знав важких нових рядків, які можна додавати довільно до самого файлу. Це пекельна неприємність, що не має рядкового коментаря.
Джон Уайт

Відповіді:


147

Ні, немає жодного способу коментувати рядок у XML і автоматично закінчувати коментар при появі рядка.

XML має лише одне визначення для коментаря :

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

XML забороняє --в коментарях підтримувати сумісність із SGML .


Вирішення проблеми полягає у використанні рядкових коментарів ( //) та запуску сценарію, щоб викреслити ці коментарі перед використанням (може бути частиною процесу складання окремого кроку). Це дозволяє значно зручніше використовувати коментарі. (Я використовував цю техніку з джерелом WiX (інструмент інсталятора для Windows). Для створення інсталятора було потрібно ряд інших кроків, тому це був лише ще один крок для додавання до сценарію / процесу збирання.)
Peter Mortensen

20

Як говорили інші, у XML немає можливості законно коментувати один рядок, який коментує кілька рядків, але є способи полегшити коментування сегментів XML.

Подивившись на приклад нижче, якщо ви додасте '>' до першого рядка, XmlTag буде коментований. Видаліть '>', і він знову прокоментується. Це найпростіший спосіб, який я бачив, щоб швидко коментувати / коментувати XML, не порушуючи нічого.

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

Додатковою перевагою є те, що ви маніпулюєте лише головним коментарем, а нижній коментар може просто сидіти там назавжди. Це порушує сумісність із SGML, і деякі XML-аналізатори будуть перешкоджати цьому. Поки це не постійне кріплення у вашому XML, і ваші парсери приймають це, це насправді не проблема.

Маркер синтаксису синтаксису Overflow і Notepad ++ трактують його як багаторядковий коментар, бібліотека Boost C ++ трактує це як багаторядковий коментар, і єдиний аналізатор, який я знайшов досі, що ламає, - це той, що знаходиться в .NET, зокрема C #. Отже, спочатку перевірте, що ваші інструменти, IDE, бібліотеки, мова тощо приймають його перед тим, як використовувати його.

Якщо ви дбаєте про сумісність з SGML, просто використовуйте це замість цього:

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

Додайте "->" до верхнього коментаря та "-" до нижнього коментаря. Недоліком є ​​необхідність кожного разу редагувати нижній коментар, що, ймовірно, полегшить кожен раз вводити <!--вгорі та -->внизу.

Я також хочу зазначити, що інші коментатори рекомендують використовувати редактор XML, який дозволяє клацати правою кнопкою миші та коментувати / коментувати / блокувати XML, що, мабуть, є кращим за хитромудрі трюки пошуку / заміни (це також спричинило б хорошу відповідь, але я ніколи не використовував таких інструментів, я просто хочу переконатися, що інформація не втрачається з часом. Мені особисто ніколи не доводилося стикатися з XML достатньо, щоб виправдати, що редактор є більш прихильним, ніж «Блокнот ++», тому це повністю залежить від вас.


3
На жаль, це неправильно. Специфікація каже: Для сумісності, рядок "-" (подвійний дефіс) НЕ МОЖЕ НЕ виникати в коментарях.
kojiro

2
Звичайно, це не законно. Специфікація на цьому зрозуміла. XML-аналізатори можуть дотримуватися Закону Постела і дозволяти вам піти від нього, але відповідна перевірка на чітку форму буде позначена ним.
kojiro

4
Як говорить @kojiro, коментар, що містить "-", не є добре сформованим XML. Фраза про "Для сумісності" - це лише редактори специфікацій, що пояснюють причину включення цього жахливого правила: це не означає, що ви можете ігнорувати правило, якщо вас не цікавить сумісність. Відхиляючи відповідь як неправильну.
Майкл Кей

10
Ви можете написати це, <!-- ->і якщо ви не можете мати XML, додайте тире замість цього.
kojiro

3
@RyanWH продовжує робити те, що працює для вас, але, здається, це залежить від помилки в аналізі XML, який ви використовуєте. Особисто я використовую IDE (oXygen), який дозволяє мені вибрати фрагмент тексту XML, клацнути правою кнопкою миші та попросити прокоментувати його. Що здається набагато простіше, ніж ваша техніка.
Майкл Кей

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.