Análisis de XML con API DOM en Python

El modelo de objeto de documento (DOM) es una interfaz de programación para documentos HTML y XML (lenguaje de marcado extensible). Define la estructura lógica de los documentos y la forma en que se accede y manipula un documento.

Analizar XML con API DOM en python es bastante simple. A modo de ejemplo, crearemos un documento XML de muestra (sample.xml) como se muestra a continuación:

<?xml version="1.0"?>
<company>
    <name>GeeksForGeeks Company</name>
    <staff id="1">
        <name>Amar Pandey</name>
        <salary>8.5 LPA</salary>
    </staff>
    <staff id="2">
        <name>Akbhar Khan</name>
        <salary>6.5 LPA</salary>
    </staff>
    <staff id="3">
        <name>Anthony Walter</name>
        <salary>3.2 LPA</salary>
    </staff>
</company>

Ahora, analicemos el XML anterior usando python. El siguiente código demuestra el proceso,

from xml.dom import minidom
  
doc = minidom.parse("sample.xml")
  
# doc.getElementsByTagName returns the NodeList
name = doc.getElementsByTagName("name")[0]
print(name.firstChild.data)
  
staffs = doc.getElementsByTagName("staff")
for staff in staffs:
        staff_id = staff.getAttribute("id")
        name = staff.getElementsByTagName("name")[0]
        salary = staff.getElementsByTagName("salary")[0]
        print("id:% s, name:% s, salary:% s" %
              (staff_id, name.firstChild.data, salary.firstChild.data))

Producción:

GeeksForGeeks Company
id:1, name: Amar Pandey, salary:8.5 LPA
id:2, name: Akbar Khan, salary:6.5 LPA
id:3, name: Anthony Walter, salary:3.2 LPA

Lo mismo también se puede hacer usando una función definida por el usuario como se muestra en el siguiente código:

from xml.dom import minidom
  
doc = minidom.parse("sample.xml")
  
# user-defined function
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("Company Name : % s \n" % getNodeText(name))
  
  
staffs = doc.getElementsByTagName("staff")
for staff in staffs:
        staff_id = staff.getAttribute("id")
        name = staff.getElementsByTagName("name")[0]
        salary = staff.getElementsByTagName("salary")[0]
        print("id:% s, name:% s, salary:% s" %
              (staff_id, getNodeText(name), getNodeText(salary)))

Producción:

Company Name : GeeksForGeeks Company 

id:1, name:Amar Pandey, salary:8.5 LPA
id:2, name:Akbhar Khan, salary:6.5 LPA
id:3, name:Anthony Walter, salary:3.2 LPA

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *