Переместите аннотацию
@XmlRootElement(name = "TestData")
в свой корневой класс и измените его на
@XmlRootElement(name = "Root")
И я верю, что вынужно
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Child1")
в классе Child1.
И повторить попытку.
Исключение говорит о том, что он ожидает элемент имени TestData с пространством имен ""(вы можете пока игнорировать пространство имен, так как оно пустое, но потратьте минуту или две, чтобы взглянуть на this , поскольку это то, что может сбить вас с толку при работе с XML в первый раз), и это потому, чтовы определяете корневой элемент как TestData.
Кроме того, приведенный вами пример данных не соответствует вашему разработанному классу.
<Child1>
<Data>
</Data>
</Child1>
public class Child1 {
@XmlElement(name = "ID")
private String ID;
}
Я не знаю, если вы 'Мы заменили прилагаемые данные для краткости ради более простого вопроса, но ваш Java-объект будет более похож на этот XML.
<Child1>
<ID>[String ID value]</ID>
</Child1>