В настоящее время в моем проекте возникает проблема, связанная с вызовом XML, хранящегося в переменной String. Я пытаюсь сохранить содержимое XML в разных переменных.
Использование общего метода JAXB, который вызывает одно и то же имя переменной и имя тега, должно решить мою проблему. В этом случае мне нужно хранить в разных именах переменных.
Это мой XML
<?xml version = "1.0" encoding = "UTF-8"?>
<PORTAL>
<NAME>PERSON 2.0</NAME>
<ID>99995</ID>
<DATAGENERATIO>2008-04-10</DATAGENERATIO>
<HOURGENERATIO>05:07:35</HOURGENERATIO>
<LANGUAGE>EN</LANGUAGE>
<XMLVERSIO>1.0</XMLVERSIO>
</PORTAL>
И это класс, используемый для хранения содержимого этого XML.
@XmlRootElement(name = "PORTAL")
public class ApiPubPortal {
private long idPortal;
private String idIdioma;
private String nombre;
private Date dataGeneracio;
private String versionXml;
}
Я уже пытаюсь использовать @XmlElement(name = "ID"), но он дает мне IllegalAnnotationExceptions
Если кто-нибудь может мне с этим помочь, я буду с благодарностью.




Вам нужно убедиться, что у вас есть геттеры и сеттеры для всех ваших приватных полей. Пример приведен ниже:
private long idPortal;
@XmlElement(name = "ID")
public long getIdPortal()
{
return idPortal;
}
public void setIdPortal(long idPortal)
{
this.idPortal = idPortal;
}
Обратите внимание на то, чтобы поместить @XmlElement (name = "ID") в геттер.
Добро пожаловать, не могли бы вы также проголосовать за ответ. Спасибо :)
نائس سولیوشن نائل
В SimpleXml вы можете использовать аннотацию @XmlName, чтобы сообщить парсеру, какое имя тега XML связано с полем. В вашем POJO нет необходимости в геттерах и сеттерах. Это будет работать:
@XmlName("PORTAL")
public class ApiPubPortal {
@XmlName("ID")
private long idPortal;
private String idIdioma; // Its not clear to which XML tag this maps
@XmlName("NAME")
private String nombre;
@XmlName("DATAGENERATIO")
private String dataGeneracio;
@XmlName("XMLVERSIO")
private String versionXml;
}
Затем ваш XML может быть сериализован следующим образом:
final String xml = ...
final SimpleXml simple = new SimpleXml();
final ApiPubPortal portal = simple.fromXml(xml, ApiPubPortal.class);
Библиотека находится в центре maven:
<dependency>
<groupId>com.github.codemonstur</groupId>
<artifactId>simplexml</artifactId>
<version>1.4.0</version>
</dependency>
Вот и все, я все это время помещал @XmlElement (name = "ID") в переменную, большое вам спасибо.