XML - problema al obtener elementos

 
Vista:

problema al obtener elementos

Publicado por XML NOVATO (1 intervención) el 25/10/2006 18:08:25
Quiero usar la función getElementsByTagNameNS para obtener de un schema los elementos de nombre element pero la lista que me retorna está vacía.

He mirado ejemplos que he visto por internet y lo hago de la misma manera, pero no me los obtiene.
Alguien sabe como puedo solucionarlo?

Pongo el fichero XSD:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://params/params1"
xmlns:pdmsd="http://params/params1"
elementFormDefault="qualified"
attributeFormDefault="unqualified">


<xsd:simpleType name="numTotalVar">
<xsd:restriction base="xsd:integer">
<xsd:maxInclusive value="100" />
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name="combovar">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Si"/>
<xsd:enumeration value="No"/>
</xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="params">
<xsd:choice>
<xsd:element name="NUM_TOTAL_VAR" pdmsd:pType="param" pdmsd:description="Numero total de variables" type="pdmsd:numTotalVar" minOccurs="1" maxOccurs="1"/>
<xsd:element name="COMBO_VAR" pdmsd:pType="param" pdmsd:description="Prueba combo" type="pdmsd:combovar" minOccurs="1" maxOccurs="1"/>
</xsd:choice>
</xsd:complexType>
<xsd:element name="params" type="pdmsd:params"/>

</xsd:schema>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Problema con la función getElementsByTagNameNS en la obtención de elementos

Publicado por Alejandro (258 intervenciones) el 13/07/2023 22:28:20
El problema que estás experimentando puede deberse a un mal uso de la función getElementsByTagNameNS en relación con los espacios de nombres en tu esquema (XSD).

La función getElementsByTagNameNS busca elementos en un documento XML utilizando tanto el URI del espacio de nombres como el nombre local del elemento. Para usar correctamente esta función en tu caso, debes proporcionar el URI del espacio de nombres correspondiente a los elementos que estás buscando.

Aquí tienes una solución para obtener los elementos de nombre "element" en tu esquema utilizando la función getElementsByTagNameNS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from xml.dom import minidom
 
# Ruta del archivo XSD
archivo_xsd = 'tufichero.xsd'
 
# URI del espacio de nombres
uri_namespace = 'http://params/params1'
 
# Nombre local del elemento que buscas
nombre_elemento = 'element'
 
# Cargar el archivo XSD
xsd_doc = minidom.parse(archivo_xsd)
 
# Obtener los elementos del esquema con el URI del espacio de nombres y el nombre local
elementos = xsd_doc.getElementsByTagNameNS(uri_namespace, nombre_elemento)
 
# Verificar si se encontraron elementos
if elementos:
    for elemento in elementos:
        # Hacer algo con cada elemento encontrado
        print(elemento.nodeName)
else:
    print('No se encontraron elementos con el nombre especificado.')

Asegúrate de proporcionar el valor correcto para `archivo_xsd` en el código anterior, que debe ser la ruta del archivo XSD que estás utilizando.

Ten en cuenta que el valor del URI del espacio de nombres `uri_namespace` debe coincidir exactamente con el URI especificado en el esquema XSD. Además, el nombre local del elemento `nombre_elemento` debe coincidir con el nombre de los elementos que deseas obtener.

Si los elementos aún no se encuentran después de verificar y ajustar el URI del espacio de nombres y el nombre local del elemento, asegúrate de que los elementos estén realmente presentes en el esquema y que el archivo XSD sea válido.

Espero que esta solución te ayude a solucionar el problema con la función getElementsByTagNameNS y a obtener los elementos deseados en tu esquema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar