Як коментувати блок тегів у XML?


795

Як коментувати блок тегів у 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-->але це лише для окремих тегів (як те, що я знаю), як //у Java та C. Я хотів би щось більше, як те, як /** comment **/можна використовувати в Java та C, щоб я міг коментувати довші блоки XML-коду.


11
Ви повинні знати, що коментарі у файлі xml вважаються вузлами типу XmlComment . Отже, якщо ви завантажуєте файл XML, ці вузли коментарів завантажуватимуться, і вам слід їх уникати чи фільтрувати під час розбору завантаженого вмісту.
El Bayames

Коментарі XML схожі на коментарі в HTML.
Сомнат Мулук

Відповіді:


1135

Ви можете використовувати цей стиль коментування в декількох рядках (який також існує в 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>

59
Одним із застережень цього є те, що у вас виникнуть проблеми з вкладеними коментарями. Вам доведеться: (1) видалити кінцевий ">" на закритому вкладеному коментарі, або (2) видалити вкладені коментарі взагалі.
безперечнороб

1
У мене виникли проблеми з (1), оскільки деякі читачі XML (тобто CruiseControl.NET) можуть мати проблеми з читанням вкладеного коментаря, який "" "видалено з кінця. Мені довелося взагалі видалити коментарі.
безперечнороб

14
@coderob Насправді навіть - заборонено в коментарях XML. Тож вам, можливо, доведеться видалити весь ->
0fnt

В Android Studio виберіть блок, а потім Ctrl + Slash, щоб прокоментувати його (або Ctrl + Shift + Slash).
Kamran Bigdely

1
Ви можете зіткнутися з проблемами використання --цього типу коментарів. Краще використовувати, - ->якщо вам потрібно тимчасово вкласти коментар. У HTML в будь-якому випадку (підмножина xml), включаючи --всередині коментаря, недійсна. Зазвичай ви можете піти з цим, але іноді це викликає проблеми. Таким чином, я обов'язково триматися подалі від декількох -підряду в коментарях, і якщо мені потрібен темп гніздо коментар, я буду розміщувати пробілу між 2 закриттям --з -->. Це дозволяє уникнути випадкових випадкових помилок у XML та HTML.
ШерілГоман

169

Ви можете обернути текст неіснуючою інструкцією з обробки, наприклад:

<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 )


11
Цей метод спрацював саме так, як мені потрібно, і мав додаткову перевагу в роботі навіть навколо внутрішніх коментарів. Я використовую це над прийнятою відповіддю, якщо у вас є будь-яка форма складного коду.
Шон Браншо

100 з 100 вам @Kasper
Шива кришна Чіппа

2
Це навіть працює з неправильним формуванням XML всередині. Тож це чудове рішення для тимчасового коментування блоку.
Макс

146

Якщо ви запитаєте, оскільки у вас <!-- -->виникли помилки з синтаксисом, це, швидше за все, розділ 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 на цю тему )


1
Так ... Я завжди знаходив розбір коментарів SGML та XML, які важко запам'ятати всі примхи ...
Делан Азабані

1
Дуже дякую, що з подвійними дефісами згадуєте дивний факт -! У мене був випадок, коли я прокоментував коментар. Незважаючи на те, що я видалив старий коментар, який закінчився, він не вдався. Приклад: <! - ... <code> <! - Старий коментар </code> ... ->
dwettstein

Щоб обійти подвійний дефіс обмеження можна замінити --з -&#45;. Це має працювати так само після коментарів у більшості випадків.
мик

48

Насправді ви можете використовувати формат <! --...--> з кількома рядками або тегами:

<!--
  ...
  ...
  ...
-->

25

Тут для коментарів ми повинні написати так:

<!-- Your comment here -->

Ярлики для IntelliJ Idea та Eclipse

Для Windows та Linux:

Ярлик для коментування одного рядка:

Ctrl + /

Ярлик для коментування декількох рядків:

Ctrl+ Shift+/

Для Mac:

Ярлик для коментування одного рядка:

cmnd + /

Ярлик для коментування декількох рядків:

cmnd+ Shift+/

Потрібно пам’ятати, що ви не можете коментувати атрибут тегу XML. Наприклад:

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    <!--android:text="Hello.."-->
    android:textStyle="bold" />

Тут TextViewє тег XML і textє атрибутом цього тегу. Ви не можете коментувати атрибути тегу XML. Ви повинні прокоментувати повний тег XML. Наприклад:

<!--<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello.."
    android:textStyle="bold" />-->

11

Ви можете легко прокоментувати дані, скориставшись цим:

<!-- 
 <data>
        <data-field1></data-field1>
        <data-field2></data-field2>
        <data-field3></data-field3>
 </data>
-->

метод коментування в xml.


1

Синтаксис для XML: <!--Your comment-->

напр.

   <?xml version = "1.0" encoding = "UTF-8" ?>
   <!--here is your comment :) -->
   <class_list>   
   <student>
   <name></name>
   <grade>A</grade>
   </student>
   </class_list>

Правила коментарів XML

Comments cannot appear before XML declaration.
Comments may appear anywhere in a document.
Comments must not appear within attribute values.
Comments cannot be nested inside the other comments.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.