911 votes

Comment commenter un bloc de balises en XML ?

Comment commenter un bloc de balises en XML ?

Par exemple, comment puis-je commenter <staticText> et tout ce qu'il contient, dans le code ci-dessous ?

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

Je pourrais utiliser <!-- staticText--> mais c'est seulement pour les balises uniques (d'après ce que je sais), par exemple // en Java et en C. Je voudrais quelque chose qui ressemble plus à la façon dont /** comment **/ peut être utilisé en Java et en C, ce qui me permet de commenter de longs blocs de code XML.

14 votes

Vous devez savoir que commentaires dans un fichier xml sont a considéré les noeuds de type XmlComment . Donc si vous charger le xml déposer ces les nœuds de commentaires vont être chargés et c'est à vous de les éviter ou de les filtrer lors de l'analyse du contenu chargé.

0 votes

Les commentaires XML sont similaires aux commentaires en HTML.

1292voto

Noon Silk Points 30396

Vous pouvez utiliser ce style de commentaire sur plusieurs lignes (qui existe aussi en 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>

72 votes

Il y a un problème avec cette méthode, à savoir que vous aurez des problèmes avec les commentaires imbriqués. Vous devrez soit : (1) supprimer le ">" de fin du commentaire imbriqué, ou (2) supprimer complètement les commentaires imbriqués.

1 votes

J'ai rencontré des problèmes avec (1), car certains lecteurs XML (par exemple CruiseControl.NET) peuvent avoir des difficultés à lire un commentaire imbriqué dont le ">" a été supprimé à la fin. J'ai fini par devoir supprimer complètement les commentaires.

17 votes

@coderob En fait, même -- n'est pas autorisé dans les commentaires XML. Vous devrez donc supprimer l'intégralité du -->.

217voto

Vous pouvez envelopper le texte avec une instruction de traitement inexistante, par exemple :

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

Les instructions de traitement imbriquées ne sont pas autorisées et '?>' met fin à l'instruction de traitement (cf. http://www.w3.org/TR/REC-xml/#sec-pi )

16 votes

Cette méthode a fonctionné exactement comme je le souhaitais, et avait l'avantage supplémentaire de fonctionner même avec des commentaires internes. Je préférerais cette méthode à la réponse acceptée si vous avez une forme quelconque de code compliqué.

4 votes

Cela fonctionne même avec un XML malformé à l'intérieur. Il s'agit donc d'une excellente solution pour commenter temporairement un bloc.

152voto

Boldewyn Points 29961

Si vous demandez, parce que vous avez obtenu des erreurs avec le <!-- --> il s'agit très probablement de la section CDATA (et là, la section ]]> ), qui se trouve alors au milieu du commentaire. Il s'agit de debe Cela ne fait pas de différence, mais l'idéal et le monde réel peuvent parfois être très éloignés l'un de l'autre (surtout en ce qui concerne le traitement XML).

Essayez de changer le ]]> aussi :

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

Une autre chose, qui me vient à l'esprit : Si le contenu de votre XML contient quelque part deux traits d'union, le commentaire s'arrête immédiatement là :

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

C'est un piège assez courant. Il est hérité de la façon dont SGML gère les commentaires. ( Lisez la spécification XML à ce sujet )

1 votes

Oui... J'ai toujours trouvé difficile de se souvenir de toutes les bizarreries de l'analyse syntaxique SGML et XML des commentaires...

1 votes

Merci beaucoup d'avoir mentionné le fait étrange des doubles traits d'union -- ! I had a case where I commented out a comment. Although I removed the old comment ending, it failed. Example: <!-- ...<code><!-- Ancien commentaire </code> ... -->

1 votes

Pour contourner la limitation du double trait d'union, vous pouvez remplacer -- con -&#45; . Il devrait fonctionner de la même manière après avoir décommenté dans la plupart des cas.

56voto

Delan Azabani Points 33013

En fait, vous pouvez utiliser le format <!--...--> avec des lignes ou des balises multiples :

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

6voto

El Bayames Points 39

Vous devez savoir que les commentaires dans un fichier xml sont considérés comme des nœuds de type XmlComment, donc si vous chargez le fichier xml, ces nœuds vont être chargés et c'est à vous de les éviter ou de les filtrer lors de l'analyse du contenu chargé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X