¿Cómo analizar XML con un atributo xmlns:lang calificado usando JAXB?
Tengo que analizar un archivo XML y para hacer esto estoy utilizando la biblioteca JAXB.
Dentro del archivo hay un atributo xml:lang
que pude analizar utilizando el espacio de nombres http://www.w3.org/XML/1998/namespace, pero no puedo encontrar el espacio de nombres adecuado para xmlns:lang
.
Pensé que el valor predeterminado era http://www.w3.org/2000/xmlns pero aún no funciona.
Desafortunadamente, no puedo pedir que se modifique el archivo para usar otro espacio de nombres, ¿tienes alguna sugerencia?
Ejemplo:
Para obtener xml:lang
:
eng
Uso el siguiente código (el espacio de nombres no se especifica en el archivo XML):
@XmlAttribute(name = "lang", namespace = "http://www.w3.org/XML/1998/namespace")
private String lang;
Pero no puedo obtener xmlns:lang
de aquí:
eng
davy.ai
Parece que
xmlns:lang
no es un espacio de nombres estándar, sino más bien uno arbitrario utilizado por el creador del archivo. Por lo tanto, no es posible usar un espacio de nombres predefinido para analizarlo con JAXB. Una solución posible es manejar este atributo como un atributo regular y obtener su valor utilizando el métodogetAttribute()
de la claseElement
en lugar de usar anotaciones de JAXB. Por ejemplo:Ten en cuenta que este enfoque requiere usar un analizador DOM en lugar de JAXB para analizar el archivo XML, pero debería funcionar para obtener el valor del atributo
xmlns:lang
.