Python - Lire un fichier XML (exemple DOM)
Dans cet exemple, nous allons vous montrer comment lire un fichier XML et imprimer ses valeurs, via Pythonxml.dom.minidom.
1. Fichier XML
Un simple fichier XML, analysé plus tard avec Pythonminidom.
staff.xml
Mkyong Enterprise example 100,000 yflow 200,000 alex 20,000
2. Exemple DOM 1
Un exemple simple de Pythonminidom.
dom-example.py
from xml.dom import minidom
doc = minidom.parse("staff.xml")
# doc.getElementsByTagName returns NodeList
name = doc.getElementsByTagName("name")[0]
print(name.firstChild.data)
staffs = doc.getElementsByTagName("staff")
for staff in staffs:
sid = staff.getAttribute("id")
nickname = staff.getElementsByTagName("nickname")[0]
salary = staff.getElementsByTagName("salary")[0]
print("id:%s, nickname:%s, salary:%s" %
(sid, nickname.firstChild.data, salary.firstChild.data))
Sortie
Mkyong Enterprise id:1001, nickname:example, salary:100,000 id:1002, nickname:yflow, salary:200,000 id:1003, nickname:alex, salary:20,000
3. Exemple DOM 2
Encore un autre exemple deminidom.
dom-example2.py
from xml.dom import minidom
doc = minidom.parse("staff.xml")
def getNodeText(node):
nodelist = node.childNodes
result = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
result.append(node.data)
return ''.join(result)
name = doc.getElementsByTagName("name")[0]
print("Node Name : %s" % name.nodeName)
print("Node Value : %s \n" % getNodeText(name))
staffs = doc.getElementsByTagName("staff")
for staff in staffs:
sid = staff.getAttribute("id")
nickname = staff.getElementsByTagName("nickname")[0]
salary = staff.getElementsByTagName("salary")[0]
print("id:%s, nickname:%s, salary:%s" %
(sid, getNodeText(nickname), getNodeText(salary)))
Sortie
Node Name : name Node Value : Mkyong Enterprise id:1001, nickname:example, salary:100,000 id:1002, nickname:yflow, salary:200,000 id:1003, nickname:alex, salary:20,000