Exemple de fichier XML d'analyse Python (image)

PHPz
Libérer: 2017-04-23 16:44:51
original
3286 Les gens l'ont consulté

Utilisez le module xml.etree.ElementTree comme suit pour analyser les fichiers XML. Le module ElementTree fournit deux classes pour atteindre cet objectif :

  • ElementTree représente l'intégralité du fichier XML (une structure arborescente)

  • L'élément représente un élément (nœud) dans l'arborescence

On exploite le fichier XML suivant : migapp.xml

Exemple de fichier XML d'analyse Python (image)

Nous pouvons importer le module ElementTree comme suit : import xml.etree.ElementTree as ET

Ou nous pouvons uniquement importer l'analyseur parse : from xml.etree.ElementTree import parse

Vous devez d'abord ouvrir un fichier XML. Pour les fichiers locaux, utilisez la fonction open S'il s'agit d'un fichier Internet, utilisez urlopen:

f = open( ' migapp.xml ' , ' rt ' , encoding. = 'utf -8' )

Ensuite, analysez le XML.

1 Analyser le fichier XML

1.1 Analyser l'élément racine

tree = ET.parse(f)
root = tree.getroot()
print('root.tag =', root.tag)
print('root.attrib =', root.attrib)
Copier après la connexion

Exemple de fichier XML d'analyse Python (image)

1.2 Analyser la racine Fils de

for child in root:      # 仅可以解析出root的儿子,不能解析出root的子孙
    print(child.tag)
    print(child.attrib) # attrib is a dict
Copier après la connexion

Exemple de fichier XML d'analyse Python (image)

1.3 Résolution des descendants de racine par index

print(root[1][1].tag)
print(root[1][1].text)
Copier après la connexion

Exemple de fichier XML d'analyse Python (image)

1.4 Analyser itérativement tous les éléments spécifiés

for element in root.iter('environment'):
    print(element.attrib)
Copier après la connexion

Exemple de fichier XML d'analyse Python (image)

1.5 Plusieurs méthodes utiles

# element.findall()解析出指定element的所有儿子
# element.find()解析出指定element的第一个儿子
# element.get()解析出指定element的属性attrib
for environment in root.findall('environment'):
    first_variable = environment.find('variable')
    print(first_variable.get('name'))
Copier après la connexion

Exemple de fichier XML d'analyse Python (image)

2 Modifier le fichier XML

Supposons que nous devions ajouter un attribut size="50" à chaque élément de texte et modifier son texte en "Benxin Tuzi", ajoutez un élément enfant date="2016/01/16"

for text in root.iter('text'):
    text.set('size', '50')
    text.text = 'Benxin Tuzi'
    text.append(ET.Element('date', attrib={}, text='2016/01/16'))
tree.write('output.xml')
Copier après la connexion

migapp.xml Partie dans :

Exemple de fichier XML d'analyse Python (image)

output.xml :

Exemple de fichier XML d'analyse Python (image)

3 Notes

  • Ne pas utiliser xml comme fichier. nom, sinon l'erreur suivante se produira :

ImportError : Aucun module nommé 'xml.etree' ; 'xml' n'est pas un package

Analyse :

En effet, lors de l'importation, il recherchera d'abord dans le chemin actuel, à ce moment-là, on constate que le module xml.py existe, et le xml.py que nous avons écrit nous-mêmes n'est bien sûr pas un package

Remarque :

Si vous ne parvenez toujours pas à interpréter correctement xml.py après l'avoir supprimé, c'est parce que xml.pyc est également généré dans le chemin actuel et que la priorité de ce fichier est supérieure à xml.py , donc l'interpréteur donne toujours la priorité à xml.pyc , le fichier doit donc également être supprimé pour réussir à résoudre le problème.

Conclusion :

Essayez de ne pas faire en sorte que le nom du fichier ait le même nom que le nom du package ou le nom du module, même si vous n'utilisez pas le module ou le package dans le script, sinon des erreurs étranges peut survenir.

  • De nombreuses fonctions d'analyse fournies dans le module ElementTree nécessitent de lire l'intégralité du document XML en mémoire à l'avance, ce qui n'est pas une bonne chose pour une analyse XML volumineuse, surtout lorsque nous commençons par la lecture XML dans le réseau ou le pipeline, l'analyse non bloquante est très importante. À ce stade, nous pouvons utiliser la classe XMLPullParse dans le module ElementTree pour le gérer. Bien sûr, nous pouvons également choisir iterparse() du module ElementTree. Cette méthode n'a pas besoin de lire tout le gros XML en mémoire lors de son analyse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!