Làm cách nào để tôi nhận xét một khối các thẻ trong XML?


795

Làm cách nào để tôi nhận xét một khối các thẻ trong XML?

Tức là làm thế nào tôi có thể bình luận <staticText>và mọi thứ bên trong nó, trong đoạn mã dưới đây?

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

Tôi có thể sử dụng <!-- staticText-->nhưng đó chỉ là các thẻ đơn (như những gì tôi biết), như //trong Java và C. Tôi muốn một cái gì đó giống như cách /** comment **/sử dụng trong Java và C, vì vậy tôi có thể nhận xét các khối mã XML dài hơn.


11
Bạn nên biết rằng các nhận xét trong tệp xml được coi là các nút thuộc loại XmlVer . Vì vậy, nếu bạn tải tệp xml, các nút nhận xét sẽ được tải và bạn phải tránh hoặc lọc chúng khi phân tích nội dung được tải.
El Bayames

Nhận xét XML tương tự như nhận xét trong HTML.
Somnath Muluk

Câu trả lời:


1136

Bạn có thể sử dụng kiểu nhận xét đó trên nhiều dòng (cũng tồn tại trong 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
Một lưu ý với điều này là bạn sẽ gặp vấn đề với các bình luận lồng nhau. Bạn sẽ phải: (1) xóa dấu ">" trên phần đóng của bình luận lồng nhau hoặc (2) xóa hoàn toàn các bình luận lồng nhau.
không thể phủ nhận

1
Tôi đã gặp vấn đề với (1), vì một số trình đọc XML (ví dụ CruiseControl.NET) có thể gặp vấn đề khi đọc một nhận xét lồng nhau đã xóa ">" từ cuối. Tôi cuối cùng đã phải loại bỏ các ý kiến ​​hoàn toàn.
không thể phủ nhận

14
@coderob Trên thực tế, thậm chí - không được phép trong các nhận xét XML. Vì vậy, bạn có thể phải xóa toàn bộ ->
0fnt

Trong Android Studio, chọn khối, sau đó Ctrl + Slash để nhận xét nó (hoặc Ctrl + Shift + Slash).
Kamran Bigdely

1
Người ta có thể gặp vấn đề khi sử dụng --trong loại bình luận này. Tốt hơn để sử dụng - ->nếu bạn cần tạm thời lồng một nhận xét. Trong HTML dù sao (một tập hợp con của xml), bao gồm cả --bên trong một nhận xét là không hợp lệ. Thông thường bạn có thể thoát khỏi nó, nhưng đôi khi gây ra vấn đề. Vì vậy, tôi xin mời bạn ở lại rõ ràng về nhiều -liên tiếp trong các ý kiến, và nếu tôi cần phải tạm thời tổ một lời nhận xét, tôi sẽ đặt khoảng trống giữa 2 bế mạc --của -->. Điều này tránh các lỗi lẻ ngẫu nhiên trong XML và HTML.
SherylHohman

169

Bạn có thể gói văn bản bằng một hướng dẫn xử lý không tồn tại, ví dụ:

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

Hướng dẫn xử lý lồng nhau không được phép và '?>' Kết thúc hướng dẫn xử lý (xem http://www.w3.org/TR/REC-xml/#sec-pi )


11
Phương pháp này hoạt động chính xác theo cách tôi cần, và có thêm lợi thế làm việc ngay cả xung quanh các bình luận nội bộ. Tôi sẽ sử dụng câu trả lời này cho câu trả lời được chấp nhận nếu bạn có bất kỳ dạng mã phức tạp nào.
Sean Branchaw

100 trên 100 cho bạn @Kasper
Shiva krishna Chippa

2
Điều này thậm chí hoạt động với XML không đúng định dạng bên trong. Vì vậy, đây là một giải pháp tuyệt vời để tạm thời bình luận ra một khối.
Tối đa

146

Nếu bạn hỏi, vì bạn có lỗi với <!-- -->cú pháp, rất có thể đó là phần CDATA (và có ]]>phần đó), sau đó nằm ở giữa bình luận. Nó không nên tạo ra sự khác biệt, nhưng thế giới lý tưởng và thực tế có thể cách nhau khá nhiều, đôi khi (đặc biệt là khi nói đến xử lý XML).

Cố gắng thay đổi ]]>, quá:

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

Một điều nữa, xuất hiện trong tâm trí: Nếu nội dung XML của bạn ở đâu đó có hai dấu gạch nối, nhận xét ngay lập tức kết thúc ở đó:

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

Đó là một cạm bẫy khá phổ biến. Nó được kế thừa từ cách SGML xử lý các bình luận. ( Đọc thông số XML về chủ đề này )


1
Có ... Tôi luôn thấy phân tích các bình luận SGML và XML khó nhớ tất cả các quirks ...
Delan Azabani

1
Cảm ơn rất nhiều vì đã đề cập đến sự thật kỳ lạ với các dấu gạch nối kép -! Tôi đã có một trường hợp mà tôi nhận xét ra một nhận xét. Mặc dù tôi đã xóa bình luận cũ kết thúc, nó đã thất bại. Ví dụ: <! - ... <code> <! - Nhận xét cũ </ code> ... ->
dwettstein

Để khắc phục giới hạn dấu gạch nối kép, bạn có thể thay thế --bằng -&#45;. Nó sẽ hoạt động như nhau sau khi không chú ý trong hầu hết các trường hợp.
mik

48

Trên thực tế, bạn có thể sử dụng định dạng <! --...--> với nhiều dòng hoặc thẻ:

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

25

Ở đây để bình luận chúng ta phải viết như dưới đây:

<!-- Your comment here -->

Các phím tắt cho IntelliJ Idea và Eclipse

Đối với Windows và Linux:

Phím tắt để bình luận một dòng duy nhất:

Ctrl + /

Phím tắt để bình luận nhiều dòng:

Ctrl+ Shift+/

Đối với máy Mac:

Phím tắt để bình luận một dòng duy nhất:

cmnd + /

Phím tắt để bình luận nhiều dòng:

cmnd+ Shift+/

Một điều bạn phải nhớ rằng, bạn không thể nhận xét một thuộc tính của thẻ XML. Ví dụ:

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

Ở đây, TextViewlà Thẻ XML và textlà một thuộc tính của thẻ đó. Bạn không thể nhận xét các thuộc tính của Thẻ XML. Bạn phải nhận xét Thẻ XML đầy đủ. Ví dụ:

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

11

Bạn có thể dễ dàng nhận xét dữ liệu bằng cách này:

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

phương pháp bình luận trong xml.


1

Cú pháp cho XML: <!--Your comment-->

ví dụ.

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

Quy tắc Nhận xét 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.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.