ฉันจะคอมเม้นต์บล็อกแท็กใน 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
Somnath Muluk

คำตอบ:


1136

คุณสามารถใช้รูปแบบการแสดงความคิดเห็นในหลายบรรทัด (ซึ่งมีอยู่ใน 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
SherylHohman

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
วิธีนี้ทำงานอย่างถูกต้องตามที่ฉันต้องการและมีข้อได้เปรียบเพิ่มเติมจากการทำงานแม้จะอยู่ในความคิดเห็นภายในก็ตาม ฉันจะใช้มันมากกว่าคำตอบที่ยอมรับถ้าคุณมีรูปแบบของรหัสที่ซับซ้อน
Sean Branchaw

100 จาก 100 ถึงคุณ @Kasper
Shiva krishna Chippa

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;ควรทำงานเหมือนเดิมหลังจากไม่แสดงความคิดเห็นในกรณีส่วนใหญ่
mik

48

ที่จริงแล้วคุณสามารถใช้รูปแบบ <! --...--> กับหลายบรรทัดหรือแท็ก:

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

25

ที่นี่เพื่อแสดงความคิดเห็นเราต้องเขียนเหมือนด้านล่าง:

<!-- Your comment here -->

ทางลัดสำหรับแนวคิด IntelliJ และ 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.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.