Сохранение содержимого тега XML в другой переменной с помощью JAXB

В настоящее время в моем проекте возникает проблема, связанная с вызовом 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

Если кто-нибудь может мне с этим помочь, я буду с благодарностью.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
197
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужно убедиться, что у вас есть геттеры и сеттеры для всех ваших приватных полей. Пример приведен ниже:

private long idPortal;

@XmlElement(name = "ID")
public long getIdPortal()
{
 return idPortal;
}
public void setIdPortal(long idPortal)
{
 this.idPortal = idPortal;
}

Обратите внимание на то, чтобы поместить @XmlElement (name = "ID") в геттер.

Вот и все, я все это время помещал @XmlElement (name = "ID") в переменную, большое вам спасибо.

Pistacho Olvidado 08.05.2018 12:50

Добро пожаловать, не могли бы вы также проголосовать за ответ. Спасибо :)

Nyle Hassan 08.05.2018 12:56

نائس سولیوشن نائل

Omar Bahir 09.05.2018 16:29

В 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>

Другие вопросы по теме