En este artículo, veremos cómo analizar XML y contar instancias de un atributo de Node en particular en Python.
¿Qué es XML?
Lenguaje de marcado extensible (XML) El lenguaje de marcado extensible (XML) es un lenguaje de marcado que define un conjunto de reglas para codificar documentos en un formato que es tanto legible por humanos como por máquinas. Es un lenguaje de marcado como HTML , y está diseñado para almacenar y transportar datos. Aquí, usaremos módulos XML incorporados en Python para analizar XML y luego contar las instancias de un Node. Utilizamos la API XML de ElementTree y la API minidom para analizar nuestro archivo XML.
El código XML para una nota se proporciona a continuación:
Debe guardarse como un archivo country_data.xml en el mismo directorio.
XML
<?xml version="1.0"?> <data> <country name="France"> <rank>1</rank> <year>2008</year> <gdppc>141100</gdppc> <neighbor name="Germany" direction="E"/> <neighbor name="Spain" direction="N"/> </country> <country name="Poland"> <rank>4</rank> <year>2011</year> <gdppc>59900</gdppc> <neighbor name="Germany" direction="W"/> </country> <country name="Itely"> <rank>68</rank> <year>2015</year> <gdppc>13600</gdppc> <neighbor name="France" direction="N"/> </country> </data>
Ejemplo 1:
En este ejemplo, usaremos el módulo xml.etree.ElementTree para analizar nuestro archivo XML y almacenarlo en la variable del árbol y luego encontraremos todas las instancias de un atributo de Node en particular con la función python findall() de este módulo. Ahora iteramos sobre una lista y verificamos el valor de un atributo de Node en particular si coincide, luego incrementaremos el conteo como 1 a nuestra variable.
Python3
# Importing our module import xml.etree.ElementTree as ET # Finding the Node Attribure with name tag # neighbor and name value as "Germany" Name_attribute = "France"; # Parsing our xml file tree = ET.parse('country_data.xml') root = tree.getroot(); # Counting the instance of Node attribute with findall NO_node = 0 ; for instance in root.findall('country/neighbor'): # Checking for the particular Node Attribute if instance.get('name') == Name_attribute: NO_node+=1; # Printing Number of nodes print ("total instance of given node attribute is : ", NO_node)
Producción:
total instance of given node attribute is : 1
Ejemplo 2:
En este ejemplo, analizaremos nuestro archivo XML con la ayuda del módulo minidom y lo asignaremos a la variable doc, la función getElementsByTagName() devuelve una lista de instancias de un Node en particular. Ahora iteramos sobre una lista y verificamos el valor de un atributo de Node en particular si coincide, luego incrementaremos el conteo como 1 a nuestra variable.
Python3
# Importing our module from xml.dom import minidom # Finding the node instance with name "Germany" Name_attribute = "Germany"; # Parsing our xml file doc = minidom.parse('country_data.xml') root = doc.getElementsByTagName('neighbor') Number_attributes = 0; for i in root: # print ctypes.cast(i, ctypes.py_object).value if i.attributes['name'].value == Name_attribute: Number_attributes += 1; # Printing Number of nodes print ("Total instance of Particular node attribute is : " ,Number_attributes)
Producción:
Total instance of Particular node attribute is : 2
Publicación traducida automáticamente
Artículo escrito por satyam00so y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA