Come posso commentare un blocco di tag in XML?


795

Come posso commentare un blocco di tag in XML?

Vale a dire come posso commentare <staticText>e tutto al suo interno, nel codice qui sotto?

  <detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]]></text>
      </staticText>
    </band>
  </detail>

Potrei usare, <!-- staticText-->ma è solo per singoli tag (come quello che so), come //in Java e C. Vorrei qualcosa di più simile a come /** comment **/può essere utilizzato in Java e C, quindi posso commentare blocchi più lunghi di codice XML.


11
Dovresti sapere che i commenti all'interno di un file XML sono considerati nodi di tipo XmlComment . Quindi, se carichi il file xml , quei nodi di commenti verranno caricati e spetta a te evitarli o filtrarli durante l'analisi del contenuto caricato.
El Bayames,

I commenti XML sono simili ai commenti in HTML.
Somnath Muluk,

Risposte:


1136

Puoi usare quello stile di commento su più righe (che esiste anche in 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
Un avvertimento con questo è che avrai problemi con i commenti nidificati. Dovrai: (1) rimuovere il ">" finale alla chiusura del commento nidificato, oppure (2) rimuovere del tutto i commenti nidificati.
innegabilmente dal

1
Ho riscontrato problemi con (1), poiché alcuni lettori XML (ad esempio CruiseControl.NET) potrebbero avere problemi a leggere un commento nidificato che ha ">" rimosso dalla fine. Ho finito per dover rimuovere del tutto i commenti.
innegabilmente dal

14
@coderob In realtà, anche - non è consentito nei commenti XML. Quindi potresti dover rimuovere l'intero ->
0fnt

In Android Studio, seleziona il blocco, quindi Ctrl + Barra per commentarlo (o Ctrl + Maiusc + Barra).
Kamran Bigdely,

1
Si possono riscontrare problemi utilizzando --all'interno di questo tipo di commento. Meglio usare - ->se devi annidare temporaneamente un commento. In HTML comunque (un sottoinsieme di xml), incluso --all'interno di un commento non è valido. Di solito puoi cavartela, ma a volte causa un problema. Quindi, sarò sicuro di stare alla larga dal multiplo -di una riga all'interno dei commenti, e se ho bisogno di annidare un commento, inserirò degli spazi tra le 2 chiusure --di -->. Questo evita errori casuali in XML e HTML.
SherylHohman,

169

Puoi avvolgere il testo con un'istruzione di elaborazione inesistente, ad esempio:

<detail>
<?ignore
  <band height="20">
    <staticText>
      <reportElement x="180" y="0" width="200" height="20"/>
      <text><![CDATA[Hello World!]]></text>
    </staticText>
  </band>
?>
</detail>

Le istruzioni di elaborazione nidificate non sono consentite e '?>' Termina le istruzioni di elaborazione (vedere http://www.w3.org/TR/REC-xml/#sec-pi )


11
Questo metodo ha funzionato esattamente come ne avevo bisogno e ha avuto l'ulteriore vantaggio di lavorare anche con i commenti interni. Userei questo sopra la risposta accettata se hai qualche forma di codice complicato.
Sean Branchaw,

100 su 100 per te @Kasper
Shiva krishna Chippa il

2
Funziona anche con XML non valido all'interno. Quindi questa è un'ottima soluzione per commentare temporaneamente un blocco.
Max

146

Se chiedi, perché hai errori con la <!-- -->sintassi, è molto probabilmente la sezione CDATA (e lì la ]]>parte), che si trova nel mezzo del commento. Non dovrebbe fare la differenza, ma il mondo ideale e quello reale possono essere un po 'distanti, a volte (specialmente quando si tratta di elaborazione XML).

Prova a cambiare ]]>anche:

  <!--detail>
    <band height="20">
      <staticText>
        <reportElement x="180" y="0" width="200" height="20"/>
        <text><![CDATA[Hello World!]--><!--]></text>
      </staticText>
    </band>
  </detail-->

Un'altra cosa, che mi viene in mente: se il contenuto del tuo XML da qualche parte contiene due trattini, il commento termina immediatamente lì:

<!-- <a> This is strange -- but true!</a> -->
--------------------------^ comment ends here

È una trappola abbastanza comune. È ereditato dal modo in cui SGML gestisce i commenti. ( Leggi le specifiche XML su questo argomento )


1
Sì ... ho sempre trovato difficile analizzare SGML e XML dei commenti per ricordare tutte le stranezze ...
Delan Azabani,

1
Grazie mille per aver menzionato lo strano fatto con i doppi trattini -! Ho avuto un caso in cui ho commentato un commento. Anche se ho rimosso il vecchio commento finale, non è riuscito. Esempio: <! - ... <code> <! - Vecchio commento </code> ... ->
dwettstein

Per risolvere il doppio trattino limitazione si può sostituire --con -&#45;. Dovrebbe funzionare lo stesso dopo essere stato scomposto nella maggior parte dei casi.
mik

48

In realtà, puoi utilizzare il formato <! --...--> con più righe o tag:

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

25

Qui per commentare dobbiamo scrivere come di seguito:

<!-- Your comment here -->

Scorciatoie per IntelliJ Idea ed Eclipse

Per Windows e Linux:

Scorciatoia per commentare una singola riga:

Ctrl + /

Scorciatoia per commentare più righe:

Ctrl+ Shift+/

Per Mac:

Scorciatoia per commentare una singola riga:

cmnd + /

Scorciatoia per commentare più righe:

cmnd+ Shift+/

Una cosa che devi tenere presente è che non puoi commentare un attributo di un tag XML. Per esempio:

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

Qui, TextViewè un tag XML ed textè un attributo di quel tag. Non puoi commentare gli attributi di un tag XML. Devi commentare il tag XML completo. Per esempio:

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

11

Puoi facilmente commentare i dati usando questo:

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

metodo di commento in xml.


1

Sintassi per XML: <!--Your comment-->

per esempio.

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

Regole dei commenti 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.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.