Я пытаюсь демаршалировать полезные данные XML стороннего производителя в класс. Проблема в том, что полезная нагрузка имеет отношения родитель / потомок, а корневой узел, родительский и дочерние элементы имеют одинаковое имя элемента. Вот образец полезной нагрузки.
<?xml version="1.0" encoding="UTF-8"?>
<Directory>
<id>2</id>
<name>Media</name>
<Directory>
<id>5</id>
<name>Default_Content</name>
<Directory>
<id>9</id>
<name>Images</name>
</Directory>
<Directory>
<id>8</id>
<name>Icons</name>
</Directory>
<Directory>
<id>6</id>
<name>Additional_Content</name>
</Directory>
</Directory>
<Directory>
<id>12</id>
<name>IC</name>
</Directory>
</Directory>
Итак, я пытаюсь аннотировать класс, чтобы JAXB / JAX-RS мог превратить его во что-то полезное.
Я пробовал что-то вроде этого
@XmlRootElement(name="Directory")
public class Directory {
private int id;
private String name;
@XmlElement(name="Directory");
private List<Directory> directories = new ArrayList<Directory>();
}
Но, как и ожидалось, он генерирует исключение IllegalAnnotationException
из-за наличия 2 свойств с одинаковыми именами.
Любые идеи относительно того, как я могу использовать JAXB / JAX-RS для чистой обработки этого беспорядка, или я должен просто проанализировать его самостоятельно ?