Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Percetakan XML yang cantik dalam Python

Percetakan XML yang cantik dalam Python

WBOY
WBOYke hadapan
2023-09-07 19:41:02974semak imbas

Percetakan XML yang cantik dalam Python

Apabila bekerja dengan data XML dalam Python, memastikan kebolehbacaan dan strukturnya dapat meningkatkan pemahaman dan kebolehselenggaraan kod anda. XML pencetakan cantik, iaitu, memformatkannya dengan lekukan dan baris baharu yang sesuai, ialah teknik yang berharga untuk mencapai matlamat ini.

Dalam artikel ini, kami akan meneroka dua cara berbeza untuk mencetak XML dengan cantik menggunakan Python: xml.dom.minidom dan xml.etree.ElementTree. Dengan memahami kaedah ini, pembangun boleh mempersembahkan data XML dengan berkesan dalam cara yang teratur dan menarik secara visual, menjadikannya lebih mudah untuk dianalisis dan dimanipulasi.

Bagaimana untuk mencetak XML dengan cantik dalam Python?

Berikut ialah dua cara kita boleh melakukan cetakan cantik dalam Python -

Kaedah 1: Gunakan xml.dom.minidom

Berikut ialah langkah-langkah yang akan kami ambil untuk melakukan pencetakan cantik menggunakan xml.dom.minidom -

  • Import modul yang diperlukan: Kami mula-mula mengimport modul "xml.dom.minidom", yang menyediakan pelaksanaan ringan API Document Object Model (DOM) untuk penghuraian XML.

  • Tentukan fungsi `pretty_print_xml_minidom`: Fungsi ini menerima rentetan XML sebagai input dan bertanggungjawab untuk menghuraikan dan mencantikkan XML untuk mencetak menggunakan `xml.dom.minidom`.

  • Menghuraikan rentetan XML: Di dalam fungsi `pretty_print_xml_minidom`, kami menggunakan kaedah `xml.dom.minidom.parseString()` untuk menghuraikan rentetan XML dan mencipta objek DOM.

  • Create-printing XML: Seterusnya, kami menggunakan kaedah "toprettyxml()" pada objek DOM untuk menjana rentetan XML yang cantik-cetak. Kami lulus parameter "indent" dengan nilai """ untuk menentukan tahap lekukan yang diingini (dua ruang dalam kes ini).

  • Alih keluar baris kosong: Secara lalai, `toprettyxml()` menambah baris kosong pada output. Untuk mengalih keluar baris kosong ini, kami membahagikan rentetan XML yang cantik dengan baris baharu (`n`), mengalih keluar mana-mana ruang putih di hadapan atau di belakang dalam setiap baris, dan kemudian menggabungkan baris bukan kosong kembali bersama.

  • Cetak XML cantik: Akhir sekali, kami mencetak rentetan XML cantik yang dihasilkan.

Prosedur 2: Menggunakan xml.etree.ElementTree

Berikut adalah langkah yang akan kami ikuti semasa melakukan cetakan cantik menggunakan xml.etree.ElementTree -

  • Import modul yang diperlukan: Kami mula-mula mengimport modul `xml.etree.ElementTree`, yang menyediakan API yang pantas dan cekap untuk menghurai dan memanipulasi XML.

  • Definisi `indent` Fungsi: Ini ialah fungsi tersuai yang digunakan untuk menambah inden secara rekursif pada elemen XML. Ia menerima parameter `elem` (elemen XML) dan parameter `level` pilihan untuk menentukan tahap lekukan semasa (lalai ialah 0).

  • Indent XML: Dalam fungsi `indent`, kami menambah indent > atribut elemen XML dengan mengubah suai `text` dan `tail`. Atribut `text` mewakili teks sejurus selepas teg pembukaan, dan atribut `tail` mewakili teks sejurus sebelum teg penutup. Dengan menambahkan lekukan pada sifat ini, kami mencapai cetakan yang cantik.

  • Definisi fungsi `pretty_print_xml_elementtree`: Fungsi ini mengambil rentetan XML sebagai input dan bertanggungjawab untuk menghurai dan mencetak cantik XML menggunakan `xml.etree.ElementTree`.

  • Menghuraikan rentetan XML: Di dalam fungsi `pretty_print_xml_elementtree`, kami menggunakan kaedah `ET.fromstring()` untuk menghuraikan rentetan XML dan mencipta objek ElementTree.

  • Indent XML: Kami memanggil fungsi `indent()` pada elemen akar XML untuk menambah lekukan pada semua elemen secara rekursif.

  • Tukar elemen XML kembali kepada rentetan: Kami menggunakan kaedah `ET.tostring()` untuk menukar elemen XML kembali kepada perwakilan rentetan. Kami lulus parameter `pengekodan` dengan nilai `"unicode"` untuk memastikan pengekodan yang betul bagi rentetan yang terhasil.

  • Cetak XML cantik: Akhir sekali, kami mencetak rentetan XML cantik yang dijana.

Kedua-dua program ini menyediakan cara yang berbeza untuk mencapai pencetakan XML yang cantik. Program pertama menggunakan API DOM yang disediakan oleh `xml.dom.minidom` untuk menghuraikan dan mencetak XML dengan cantik, manakala program kedua menggunakan modul `xml.etree.ElementTree` dan mentakrifkan fungsi tersuai untuk Menambah lekukan pada Elemen XML secara rekursif.

Berikut adalah contoh program menggunakan dua kaedah di atas -

Pilihan 1: Gunakan xml.dom.minidom

import xml.dom.minidom

def pretty_print_xml_minidom(xml_string):
   # Parse the XML string
   dom = xml.dom.minidom.parseString(xml_string)

   # Pretty print the XML
   pretty_xml = dom.toprettyxml(indent="  ")

   # Remove empty lines
   pretty_xml = "\n".join(line for line in pretty_xml.split("\n") if line.strip())

   # Print the pretty XML
   print(pretty_xml)

# Example usage
xml_string = '''
<root>
  <element attribute="value">
   <subelement>Text</subelement>
  </element>
</root>
'''

pretty_print_xml_minidom(xml_string)

Output

<?xml version="1.0" ?>
<root>
  <element attribute="value">
   <subelement>Text</subelement>
  </element>
</root>

Prosedur 2: Menggunakan xml.etree.ElementTree

import xml.etree.ElementTree as ET

def indent(elem, level=0):
   # Add indentation
   indent_size = "  "
   i = "\n" + level * indent_size
   if len(elem):
      if not elem.text or not elem.text.strip():
         elem.text = i + indent_size
      if not elem.tail or not elem.tail.strip():
         elem.tail = i
      for elem in elem:
         indent(elem, level + 1)
      if not elem.tail or not elem.tail.strip():
         elem.tail = i
   else:
      if level and (not elem.tail or not elem.tail.strip()):
         elem.tail = i

def pretty_print_xml_elementtree(xml_string):
   # Parse the XML string
   root = ET.fromstring(xml_string)

   # Indent the XML
   indent(root)

   # Convert the XML element back to a string
   pretty_xml = ET.tostring(root, encoding="unicode")

   # Print the pretty XML
   print(pretty_xml)

# Example usage
xml_string = '''
<root>
  <element attribute="value">
   <subelement>Text</subelement>
  </element>
</root>
'''

pretty_print_xml_elementtree(xml_string)

Output

<root>
  <element attribute="value">
   <subelement>Text</subelement>
  </element>
</root>

Kesimpulan

Ringkasnya, pencetakan XML yang cantik dalam Python adalah penting untuk meningkatkan kebolehbacaan dan struktur data XML anda. Sama ada menggunakan perpustakaan xml.dom.minidom atau xml.etree.ElementTree, pembangun boleh memformat XML dengan mudah dengan lekukan yang betul. Dengan menggunakan teknik ini, pengaturcara boleh meningkatkan pemahaman kod, memudahkan penyahpepijatan dan menggalakkan kerjasama yang lebih baik apabila bekerja dengan data XML dalam projek Python.

Atas ialah kandungan terperinci Percetakan XML yang cantik dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam