Imprimer joliment une sortie XML en Python
-
Rendre la sortie XML jolie en Python à l’aide de la bibliothèque
BeautifulSoap
-
Rendre la sortie XML jolie en Python à l’aide de la bibliothèque
lxml
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.