Jak skomentować blok tagów w XML?

795

Jak skomentować blok tagów w XML?

Tj. Jak mogę skomentować <staticText>i wszystko w nim, w poniższym kodzie?

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

Mógłbym użyć, <!-- staticText-->ale to tylko dla pojedynczych znaczników (jak wiem), jak //w Javie i C. Chciałbym czegoś więcej, jak /** comment **/można używać w Javie i C, więc mogę komentować dłuższe bloki kodu XML.

Jonas
źródło
11
Powinieneś wiedzieć, że komentarze w pliku xmluważane za węzły typu XmlComment . Więc jeśli załadujesz plik xml , te węzły komentarzy zostaną załadowane i do Ciebie należy ich unikanie lub filtrowanie podczas analizowania załadowanej zawartości.
El Bayames
Komentarze XML są podobne do komentarzy w HTML.
Somnath Muluk

Odpowiedzi:

1135

Możesz użyć tego stylu komentarza w wielu wierszach (który istnieje również w 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>
Południe jedwabiu
źródło
59
Jednym zastrzeżeniem jest to, że będziesz mieć problemy z zagnieżdżonymi komentarzami. Będziesz musiał albo: (1) usunąć końcowe „>” przy zamknięciu zagnieżdżonego komentarza lub (2) usunąć całkowicie zagnieżdżone komentarze.
undeniablyrob
1
Wystąpiły problemy z (1), ponieważ niektóre czytniki XML (np. CruiseControl.NET) mogą mieć problemy z odczytaniem zagnieżdżonego komentarza, którego „>” usunięto na końcu. Skończyło się na tym, że musiałem całkowicie usunąć komentarze.
undeniablyrob
14
@coderob W rzeczywistości nawet - nie jest dozwolone w komentarzach XML. Może być więc konieczne usunięcie całego ->
0fnt
W Android Studio wybierz blok, a następnie Ctrl + Slash, aby go skomentować (lub Ctrl + Shift + Slash).
Kamran Bigdely,
1
Można napotkać problemy przy użyciu --tego typu komentarza. Lepiej użyć, - ->jeśli chcesz tymczasowo zagnieździć komentarz. W każdym razie w HTML (podzbiór xml), w tym --wewnątrz komentarza jest niepoprawny. Zwykle można tego uniknąć, ale czasami powoduje problem. Więc pamiętaj, aby zatrzymać się z dala od wielokrotności -w rzędzie w komentarzach, a jeżeli muszę gniazdo temp komentarz, będę umieszczać spacji między zamknięciem 2 --z -->. Pozwala to uniknąć losowo dziwnych błędów w XML i HTML.
SherylHohman,
169

Możesz zawinąć tekst w nieistniejącą instrukcję przetwarzania, np .:

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

Zagnieżdżone instrukcje przetwarzania są niedozwolone, a „?>” Kończy instrukcję przetwarzania (patrz http://www.w3.org/TR/REC-xml/#sec-pi )

Kasper van den Berg
źródło
11
Ta metoda działała dokładnie tak, jak jej potrzebowałem, i miała tę dodatkową zaletę, że działała nawet wokół wewnętrznych komentarzy. Użyłbym tego nad zaakceptowaną odpowiedzią, jeśli masz jakąkolwiek formę skomplikowanego kodu.
Sean Branchaw
100 na 100 do ciebie @Kasper
Shiva krishna Chippa
2
Działa to nawet ze zniekształconym XML wewnątrz. Jest to więc świetne rozwiązanie do tymczasowego komentowania bloku.
Maks.
146

Jeśli zapytasz, ponieważ masz błędy w <!-- -->składni, najprawdopodobniej jest to sekcja CDATA (i tam ]]>część), która następnie znajduje się w środku komentarza. Nie powinno to robić różnicy, ale czasami świat idealny i rzeczywisty może być dość osobny (szczególnie jeśli chodzi o przetwarzanie XML).

Spróbuj również zmienić ]]>:

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

Inna sprawa, która przychodzi mi na myśl: jeśli zawartość twojego XML zawiera gdzieś dwa łączniki, komentarz natychmiast się kończy:

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

To dość powszechna pułapka. Jest dziedziczony ze sposobu, w jaki SGML obsługuje komentarze. ( Przeczytaj specyfikację XML na ten temat )

Boldewyn
źródło
1
Tak ... Zawsze uważałem, że parsowanie SGML i XML komentarzy jest trudne do zapamiętania dla wszystkich dziwactw ...
Delan Azabani
1
Wielkie dzięki za wspomnienie o dziwnym fakcie z podwójnymi myślnikami -! Miałem przypadek, w którym skomentowałem komentarz. Chociaż usunąłem stare zakończenie komentarza, nie powiodło się. Przykład: <! - ... <code> <! - Stary komentarz </code> ... ->
dwettstein
Aby obejść ten podwójny myślnik ograniczenie można zastąpić --z -&#45;. W większości przypadków powinno działać tak samo po odkomentowaniu.
mik
48

W rzeczywistości możesz używać formatu <! --...--> z wieloma wierszami lub tagami:

<!--
  ...
  ...
  ...
-->
Delan Azabani
źródło
25

Tutaj do komentowania musimy napisać jak poniżej:

<!-- Your comment here -->

Skróty do Idea IntelliJ i Eclipse

W systemie Windows i Linux:

Skrót do komentowania pojedynczej linii:

Ctrl + /

Skrót do komentowania wielu linii:

Ctrl+ Shift+/

Dla Maca:

Skrót do komentowania pojedynczej linii:

cmnd + /

Skrót do komentowania wielu linii:

cmnd+ Shift+/

Należy pamiętać, że nie można komentować atrybutu znacznika XML. Na przykład:

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

Tutaj TextViewjest tag XML i textjest atrybutem tego tagu. Nie możesz komentować atrybutów znacznika XML. Musisz skomentować pełny tag XML. Na przykład:

<!--<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Hello.."
    android:textStyle="bold" />-->
Avijit Karmakar
źródło
11

Możesz łatwo skomentować dane, używając tego:

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

metoda komentowania w xml.

SVG
źródło
1

Składnia dla XML: <!--Your comment-->

na przykład.

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

Reguły komentarzy 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.
TheSuMiT.
źródło