es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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
Tags:  , , , ,

Answer

  1. Avatar for 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étodo getAttribute() de la clase Element en lugar de usar anotaciones de JAXB. Por ejemplo:

    import org.w3c.dom.Element;
    
    // ...
    
    Element softAttribute = // obtener el elemento SoftAttribute del archivo XML utilizando un analizador DOM
    String langValue = softAttribute.getAttribute("xmlns:lang");
    

    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.

Comments are closed.