Ce module contient quelques fonctions simples pour lire un fichier xml. Les fonctions permettent à partir d’une liste de ligne xml ou d’un fichier xml, d’extraire un bloc de données contenu entre deux balises, d’obtenir les attributs et les valeurs associées à une balise, d’extraire les données entre deux balises et d’obtenir le nom d’une balise.
Par la suite on emploiera les termes balise, clefs, valeur et bloc. Voici ce qu’on appellera un bloc et qui définit les autres terme
<balise clefs1="valeur" clefs2="valeur">
bla bla
</balise>
Dans les exemples, on travaille sur un fichier xml comme celui ci
<monxml>
<info>
<i> coucou </i>
<age nom="toto"> 18 </age>
<taille nom="tata"> 160 </taille>
</info>
<param>
<allsets>
<set info="att 1" type="a">
<i> 1. </i>
</set>
<set info="att 2" type="b">
<i> 2. </i>
</set>
<set info="att 3" type="a">
<i> 3. </i>
</set>
</allsets>
</param>
</monxml>
Renvoie une liste dont chaque élément contient la liste des lignes correspondantes aux blocs délimités par balise, c’est à dire comprises entre <balise> et </balise>.
Parameters: |
|
---|
Examples using the xml sample show at the top of this page :
>>> xml = open("fichier.xml", "r").readlines()
You want bloc info
>>> getBlocs("info", xml)
[['<info>', '<i> coucou </i>', '<age nom="toto"> 18 </age>', '<taille nom="tata"> 160 </taille>', '</info>']]
You want blocs set
>>> getBlocs("set", xml)
[['<set info="att 1" type="a">', '<i> 1. </i>', '</set>'], ['<set info="att 2" type="b">', '<i> 2. </i>', '</set>'], ['<set info="att 3" type="a">', '<i> 3. </i>', '</set>']]
You want the first bloc set
>>> getBlocs("set", xml, onlyfirst = True)
['<set info="att 1" type="a">', '<i> 1. </i>', '</set>']
You want bloc set with clefs type equal b and clefs info equal att 2
>>> getBlocs("set", xml, {"type":"b", "info":"att 2"})
[['<set info="att 2" type="b">', '<i> 2. </i>', '</set>']]
You want bloc set with clefs type equal a
>>> getBlocs("set", xml, {"type":"a"})
[['<set info="att 1" type="a">', '<i> 1. </i>', '</set>'], ['<set info="att 3" type="a">', '<i> 3. </i>', '</set>']]
Retourne dans un dictionnaire, les valeurs des clefs indiquées dans listeClefs lues sur ligne. Si une clefs n’est pas trouvée la valeur None lui est attribuée.
Parameters: |
|
---|
>>> ligne = '<i type="string" name="PREC">medium</i>'
>>> getClefs(ligne, ["type", "name"])
{'type': 'string', 'name': 'PREC'}
Retourne les données contenues entre deux balises xml lues sur ligne
Parameters: | ligne (string) – xml input line |
---|
Examples :
>>> ligne = '<i type="string" name="PREC">medium</i>'
>>> getNodeData(ligne)
['medium']
>>> ligne = '<i name="subversion" type="string">3Apr08 complex serial</i>'
>>> getNodeData(ligne)
['3Apr08', 'complex', 'serial']
>>> ligne = '<i name="ENCUT"> 450.00000000</i>'
>>> getNodeData(ligne)
['450.00000000']
Retourne le nom de la balise sur une ligne d’un fichier xml
Parameters: | ligne (string) – xml input line |
---|
Examples :
>>> ligne = "<kpoints></kpoints>"
>>> getNodeName(ligne)
'kpoints'
>>> ligne = '<i name="subversion" type="string">3Apr08 complex serial</i>'
>>> getNodeName(ligne)
'i'