Как демаршалировать XML-сообщение с плохой родительской / дочерней моделью

Я пытаюсь демаршалировать полезные данные 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 для чистой обработки этого беспорядка, или я должен просто проанализировать его самостоятельно ?

6
задан bdoughan 18 July 2013 в 20:49
поделиться