Imprimer joliment une sortie XML en Python

Vaibhav Vaibhav 16 février 2024
  1. Rendre la sortie XML jolie en Python à l’aide de la bibliothèque BeautifulSoap
  2. Rendre la sortie XML jolie en Python à l’aide de la bibliothèque lxml
Imprimer joliment une sortie XML en Python

Lors de la lecture de fichiers texte, de fichiers HTML, de fichiers XML, etc., le contenu d’un fichier est mal structuré et contient une indentation incohérente. Cette disparité rend difficile la compréhension de la production. Ce problème peut être résolu en embellissant la sortie de ces fichiers. L’embellissement comprend la correction d’indentations incohérentes, la suppression d’espaces aléatoires, etc.

Dans cet article, nous allons apprendre à rendre une sortie de fichier XML plus jolie. Pour que nous soyons tous sur la même page, les codes Python suivants prendront en compte ce fichier XML. Si vous souhaitez utiliser le même fichier, il vous suffit de copier le contenu XML dans un nouveau fichier du nom de books.xml.

Rendre la sortie XML jolie en Python à l’aide de la bibliothèque BeautifulSoap

BeautifulSoup est une bibliothèque basée sur Python pour analyser les fichiers HTML et XML. Il est généralement utilisé pour extraire des données Web de sites Web et de documents. Nous pouvons utiliser cette bibliothèque pour embellir la sortie d’un document XML.

Si cette bibliothèque n’est pas installée sur votre machine, utilisez l’une des commandes pip suivantes.

pip install beautifulsoup4
pip3 install beautifulsoup4

Nous devons installer deux modules supplémentaires pour travailler avec cette bibliothèque : html5lib et lxml. La bibliothèque html5lib est une bibliothèque basée sur Python pour analyser des documents HTML ou Hypertext Markup Language. Et, la bibliothèque lxml est une collection d’utilitaires pour travailler avec des fichiers XML. Utilisez les commandes pip suivantes pour installer ces bibliothèques sur votre machine.

pip install html5lib
pip install lxml 

Reportez-vous au code Python suivant pour comprendre l’utilisation.

from bs4 import BeautifulSoup

filename = "./books.xml"
bs = BeautifulSoup(open(filename), "xml")
xml_content = bs.prettify()
print(xml_content)

Production :

<?xml version="1.0" encoding="utf-8"?>
<catalog>
 <book id="bk101">
  <author>
   Gambardella, Matthew
  </author>
  <title>
   XML Developer's Guide
  </title>
  <genre>
   Computer
  </genre>
  <price>
   44.95
  </price>
  <publish_date>
   2000-10-01
  </publish_date>
  <description>
   An in-depth look at creating applications
    with XML.
  </description>
 </book>
 
 ...

 <book id="bk111">
  <author>
   O'Brien, Tim
  </author>
  <title>
   MSXML3: A Comprehensive Guide
  </title>
  <genre>
   Computer
  </genre>
  <price>
   36.95
  </price>
  <publish_date>
   2000-12-01
  </publish_date>
  <description>
   The Microsoft MSXML3 parser is covered in
    detail, with attention to XML DOM interfaces, XSLT processing,
    SAX and more.
  </description>
 </book>
 <book id="bk112">
  <author>
   Galos, Mike
  </author>
  <title>
   Visual Studio 7: A Comprehensive Guide
  </title>
  <genre>
   Computer
  </genre>
  <price>
   49.95
  </price>
  <publish_date>
   2001-04-16
  </publish_date>
  <description>
   Microsoft Visual Studio 7 is explored in depth,
    looking at how Visual Basic, Visual C++, C#, and ASP+ are
    integrated into a comprehensive development
    environment.
  </description>
 </book>
</catalog>

Le code ci-dessus considère que le fichier books.xml est dans le répertoire de travail courant. Ou, nous pouvons également définir le chemin complet du fichier dans la variable filename. La fonction prettify() embellit la sortie du fichier XML. Notez que la sortie a été coupée à des fins de compréhension.

Rendre la sortie XML jolie en Python à l’aide de la bibliothèque lxml

Nous pouvons utiliser la bibliothèque lxml seule pour embellir la sortie d’un fichier XML. Reportez-vous au code Python suivant pour la même chose.

from lxml import etree

filename = "./books.xml"
f = etree.parse(filename)
content = etree.tostring(f, pretty_print=True, encoding=str)
print(content)

Production :

<?xml version="1.0" encoding="utf-8"?>
<catalog>
 <book id="bk101">
  <author>
   Gambardella, Matthew
  </author>
  <title>
   XML Developer's Guide
  </title>
  <genre>
   Computer
  </genre>
  <price>
   44.95
  </price>
  <publish_date>
   2000-10-01
  </publish_date>
  <description>
   An in-depth look at creating applications
    with XML.
  </description>
 </book>
 
 ...

 <book id="bk111">
  <author>
   O'Brien, Tim
  </author>
  <title>
   MSXML3: A Comprehensive Guide
  </title>
  <genre>
   Computer
  </genre>
  <price>
   36.95
  </price>
  <publish_date>
   2000-12-01
  </publish_date>
  <description>
   The Microsoft MSXML3 parser is covered in
    detail, with attention to XML DOM interfaces, XSLT processing,
    SAX and more.
  </description>
 </book>
 <book id="bk112">
  <author>
   Galos, Mike
  </author>
  <title>
   Visual Studio 7: A Comprehensive Guide
  </title>
  <genre>
   Computer
  </genre>
  <price>
   49.95
  </price>
  <publish_date>
   2001-04-16
  </publish_date>
  <description>
   Microsoft Visual Studio 7 is explored in depth,
    looking at how Visual Basic, Visual C++, C#, and ASP+ are
    integrated into a comprehensive development
    environment.
  </description>
 </book>
</catalog>

Prenez note de l’argument pretty_print = True. Ce drapeau rend la sortie plus jolie.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Article connexe - Python XML