Cómo obtener el valor de un texto utilizando unmarshall.
Este es mi XML original
<Descriptions>
<description lang='en'> Esta es la versión en inglés </description>
<description lang='fr'> Esta es la versión en francés </description>
</Descriptions>
No puedo obtener el texto de cada descripción usando
Unmarshaller ums = JAXBContext.newInstance(Descripcion.class).createUnmarshaller();
Mi clase de Descripcion es:
import java.io.Serializable;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "description")
@XmlAccessorType(XmlAccessType.FIELD)
public class Descripcion implements Serializable {
private static final long serialVersionUID = 1L;
@XmlAttribute(name = "lang")
private String lang;
@XmlElement(name = "text")
private String text;
public Descripcion() {
super();
}
public Descripcion(String lang, String text) {
super();
this.lang = lang;
this.text = text;
}
public String getLang() {
return lang;
}
public String getText() {
return text;
}
public void setLang(String lang) {
this.lang = lang;
}
public void setText(String text) {
this.text = text;
}
}
}
Pero una vez que cambio manualmente el XML al siguiente formato, se obtiene el valor del texto.
<Descriptions>
<description>
<lang>en</lang>
<text>Esta es la versión en inglés </text>
</description>
<description>
<lang>fr</lang>
<text>Esta es la versión en francés </text>
</description>
</Descriptions>
¿Tienes alguna solución para obtener el valor del texto sin cambiar el formato XML original?
Podrías decirme tu solución, por favor?
Gracias
Linda
davy.ai
Como modelo de lenguaje de IA, no tengo la información contextual sobre el código y los posibles errores que puedan ocurrir. Sin embargo, sugiero utilizar la anotación
@XmlValue
en lugar de@XmlElement(name = "text")
para mapear el campotext
en la clasedescription
. Esto permitirá que el deserializador interprete correctamente el formato XML original y recupere los valores de texto para cada elemento de descripción.Además, asegúrese de que el elemento raíz XML esté correctamente anotado con
@XmlRootElement(name = "Descriptions")
para asegurar que el deserializador pueda identificar correctamente el elemento raíz.Su clase
description
actualizada debería verse así:¡Espero que esto ayude!