3 votes

Compter le nombre de balises xml en python en utilisant xml.dom.minidom

Mon fichier XML test.xml contient les balises suivantes

<?xml version="1.0" encoding="ISO-8859-1"?>
<AppName>
    <author>Subho Halder</author>
    <description> Description</description>
    <date>2012-11-06</date>
        <out>Output 1</out>
        <out>Output 2</out>
        <out>Output 3</out>
</AppName>

Je veux compter le nombre de fois que le <out> Le tag s'est produit

Voici le code python que j'ai écrit jusqu'à présent :

from xml.dom.minidom import parseString
file = open('test.xml','r')
data = file.read()
file.close()
dom = parseString(data)
if (len(dom.getElementsByTagName('author'))!=0):
    xmlTag = dom.getElementsByTagName('author')[0].toxml()
    author = xmlTag.replace('<author>','').replace('</author>','')
    print author

Quelqu'un peut-il m'aider ?

6voto

sotapme Points 2527

Pruebe len(dom.getElementsByTagName('out'))

from xml.dom.minidom import parseString
file = open('test.xml','r')
data = file.read()
file.close()
dom = parseString(data)
print len(dom.getElementsByTagName('out'))

donne

3

2voto

myusuf3 Points 3924

Je recommande d'utiliser lxml

import lxml.etree
doc = lxml.etree.parse(test.xml)
count = doc.xpath('count(//out)')

Vous pouvez trouver plus d'informations sur XPATH aquí .

2voto

Nikos Tavoularis Points 1144

Si vous voulez, vous pouvez aussi utiliser ElementTree . Avec la fonction ci-dessous, vous obtiendrez un dictionnaire avec les noms des balises comme clé et le nombre de fois que cette balise est rencontrée dans votre fichier XML.

import xml.etree.ElementTree as ET
from collections import Counter

def count_tags(filename):
        my_tags = []
        for event, element in ET.iterparse(filename):
            my_tags.append(element.tag)
        my_keys = Counter(my_tags).keys()
        my_values = Counter(my_tags).values()
        my_dict = dict(zip(my_keys, my_values))
        return my_dict

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X