Предположим, у меня есть следующие классы:
@XmlNamedObjectGraph(
name = "summary-doc",
attributeNodes = [
@XmlNamedAttributeNode("figure"),
@XmlNamedAttributeNode("table")
]
)
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement
public class Document {
@XmlElement
Conclusion conclusion;
@XmlElement
Table table
@XmlElement
String figure
@XmlElement
String title
@XmlElement
String quote
}
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(propOrder = ["rowsCount", "columnsCount"])
class Table {
@XmlElement
Integer rowsCount
@XmlElement
Integer columnsCount
}
@XmlAccessorType(XmlAccessType.NONE)
@XmlType
class Conclusion {
@XmlElement
String description
}
И следующий xml, из которого следует выполнить демаршаллинг:
<?xml version="1.0" encoding="UTF-8"?>
<document>
<title>my title</title>
<quote>my quote</quote>
<conclusion>
<description>my conclusion</description>
</conclusion>
<table>
<rowsCount>25</rowsCount>
<columnsCount>5</columnsCount>
</table>
<figure>Fig 32</figure>
</document>
Когда демаршаллинг выполняется с использованием "summary-doc"граф объектов, все поля созданного документа пусты.
Если я изменю порядок элементов xml и переместу объект, который не содержится в графе объектов, после элементов, представляющих интерес, заполняются итоговые поля. Таким образом, в следующем XML-коде поле «таблица» будет заполнено, но «фигура» все еще пуста, поскольку «заключение» отсутствует в графе объектов и отображается перед элементом «фигура» в XML.
<?xml version="1.0" encoding="UTF-8"?>
<document>
<title>my title</title>
<quote>my quote</quote>
<table>
<rowsCount>25</rowsCount>
<columnsCount>5</columnsCount>
</table>
<conclusion>
<description>my conclusion</description>
</conclusion>
<figure>Fig 32</figure>
</document>
Я использую eclipselink 2.7.4. У вас есть предложения, как это исправить?