Générer du XML (RSS) avec Python

introduction

J'ai dû sortir RSS ver2 avec Python, mais j'ai fait une note car c'était de la mousse à plusieurs reprises à ce moment-là.

Python a une forte affinité avec json, mais XML semble gênant. J'ai quelques bibliothèques comme ci-dessous, mais je ne peux pas réaliser ce que je veux faire.

manière

Après tout, je me suis installé en convertissant un objet DOM en XML.

Lors de la génération à partir d'un modèle XML d'une chaîne de caractères

#!/usr/bin/env python
# coding: utf-8

from xml.dom.minidom import parseString

xml_template = "<rss version=\"2.0\">\
        <channel>\
            <title>title</title>\
            <link>link</link>\
            <description>desctiption</description>\
            <language>ja</language>\
        </channel></rss>"
dom = parseString(xml_template)

#Obtenir le nœud de canal
channel = dom.getElementsByTagName("channel")[0]

#Générer un nœud d'élément
item = dom.createElement('item')
#Ajouter au nœud de canal
channel.appendChild(item)

#Génération de sous-nœuds
subnode = dom.createElement('subnode')
subnode.appendChild(dom.createTextNode("Le japonais est également OK"))
#Définir l'attribut et la valeur dans la sous-note
subnode_attr = dom.createAttribute('key')
subnode_attr.value = 'value'
subnode.setAttributeNode(subnode_attr)
#Ajouter un nœud de sous-nœud au nœud d'élément
item.appendChild(subnode)

#Convertir dom en xml et formater
print (dom.toprettyxml())

production

<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>title</title>
    <link>link</link>
    <description>desctiption</description>
    <language>ja</language>
    <item>
      <subnode key="value">Le japonais est également OK</subnode>
    </item>
  </channel>
</rss>

Lors de la génération de XML à partir de 1

#!/usr/bin/env python
# coding: utf-8

import xml.dom.minidom

#Générer un objet DOM
dom = xml.dom.minidom.Document()

#Création et ajout de nœuds racine
root = dom.createElement('root')
dom.appendChild(root)

#Génération de sous-nœuds
subnode = dom.createElement('subnode')
subnode.appendChild(dom.createTextNode("Le japonais est également OK"))
#Définir l'attribut et la valeur dans la sous-note
subnode_attr = dom.createAttribute('key')
subnode_attr.value = 'value'
subnode.setAttributeNode(subnode_attr)
#Ajouter un nœud de sous-nœud au nœud d'élément
root.appendChild(subnode)

#Convertir dom en xml et formater
print (dom.toprettyxml())

production

<?xml version="1.0"?>
<root>
  <subnode key="value">Le japonais est également OK</subnode>
</root>

Résumé

json meilleur

Reference

Recommended Posts

Générer du XML (RSS) avec Python
Scraping RSS avec Python
Traitez le XML avec Python.
[Python] Générer un mot de passe avec Slackbot
Traiter les données Pubmed .xml avec python
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Traiter les données Pubmed .xml avec python [Partie 2]
Grattage avec Python
Python avec Go
Générer des données de test japonais avec Python Faker
Twilio avec Python
Intégrer avec Python
Jouez avec 2016-Python
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
Bingo avec python
Zundokokiyoshi avec python
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Résumé de la comparaison des bibliothèques pour générer des PDF avec Python
Génération de deux nombres pseudo-aléatoires corrélés (avec exemple Python)
Essayez de générer automatiquement des documents Python avec Sphinx
Générez une instruction d'insertion à partir de CSV avec Python.
Comparez les vitesses d'analyse XML avec Python et Go
Générer n nombres pseudo-aléatoires corrélés (avec l'exemple Python)
Communication série avec Python
Zip, décompressez avec python
Django 1.11 a démarré avec Python3.6
Jugement des nombres premiers avec Python
Python avec eclipse + PyDev.
Communication de socket avec Python
Analyse de données avec python 2
Grattage en Python (préparation)
Apprendre Python avec ChemTHEATER 03
Recherche séquentielle avec Python
Exécutez Python avec VBA
Manipuler yaml avec python
Résolvez AtCoder 167 avec python
Communication série avec python
[Python] Utiliser JSON avec Python
Apprendre Python avec ChemTHEATER 05-1
Apprenez Python avec ChemTHEATER
Exécutez prepDE.py avec python3
1.1 Premiers pas avec Python
Collecter des tweets avec Python
Binarisation avec OpenCV / Python
3. 3. Programmation IA avec Python
Méthode Kernel avec Python
Non bloquant avec Python + uWSGI
Grattage avec Python + PhantomJS
Analyser XML en Python
Publier des tweets avec python
Conduisez WebDriver avec python
Utiliser mecab avec Python 3
[Python] Redirection avec CGIHTTPServer
Analyse vocale par python