У меня есть xml Мне нужно разобрать:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE nitexp SYSTEM "http://www.nitml.org/nitexp/1.0/nitexp.dtd" [<!ENTITY % nitcml SYSTEM "http://www.nitml.org/nitcml/1.0/nitcml.dtd" > %nitcml;]>
<nitexp xmlns="http://www.nitml.org/nitexp/1.0">
<item type="sasa">
<nd>nitl20043581</nd>
<source>
<name>name</name>
<issue>
<publicdate>20200210</publicdate>
<page>32</page>
<column></column>
</issue>
</source>
<title>Immof inanz </title>
<author>hshsa</author>
<annotation>
<nitcml xmlns="http://www.nitml.org/nitcml/1.0">
</nitcml>
</annotation>
<content>
<nitcml xmlns="http://www.nitml.org/nitcml/1.0">
<body><p><l>dsadasdasd</l><l>dasdasd</l><l> dasdas</l><l></l></p></body>
</nitcml>
</content>
<nmms><importdate>20200210</importdate>
<topic code="np01"/>
<mark> </mark>
<useraction></useraction>
<weight></weight>
<group></group><attachments></attachments><note>
<nitcml xmlns="http://www.nitml.org/nitcml/1.0"></nitcml></note>
<translation><nitcml xmlns="http://www.nitml.org/nitcml/1.0"></nitcml>
</translation>
<field>
<value>ni</value>
<value>20a04</value>
<value>358d1</value>
</field>
</nmms>
</item>
</nitexp>
Я могу сделать это просто, но когда я попробую на другой стороне, я получу нулевой предмет. Мой основной класс:
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Setter
@ToString
@XmlRootElement(name = "nitexp", namespace="http://www.nitml.org/nitexp/1.0")
public class Article {
private Item item = Item.builder().build();
@XmlElement(name = "item")
public ArticleItem getItem() {
return item;
}
}
, затем
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Setter
@ToString
@XmlType(propOrder={"type","nitoid","source","title","author","annotation","content","nmms"})
public class ArticleItem {
private String type;
private String nitoid;
private ArticleSource source = new ArticleSource();
private String title;
private String author;
private String annotation;
private String content;
private String nmms;
@XmlAttribute(name = "type")
public String getType() {
return type;
}
... и так далее.
Я работаю с Java 12, у меня есть jaxb- api и glassfi sh .jaxb в моих зависимостях pom. Я пытался поместить аннотации @XMLElement на геттеры и сеттеры. Я попытался поместить аннотацию XMLRootElement в каждый вложенный класс, но безуспешно. Я также пытался не использовать @Builder и не инициализировать объекты классов. Я даже пытался изменить свой xml и вырезать второй ряд, но это не проблема. Сейчас я даже не знаю, что я могу сделать по-другому, что изменить и как изучить, где могут быть возможные проблемы. Буду благодарен за любые предложения, идеи. Спасибо!