Я довольно новичок в JAXB и столкнулся с проблемой, которую не могу решить.
Если у меня есть простой XML-файл, как показано ниже.
<Root>
<Test>TestStuff</Test>
</Root>
Я хотел бы создать класс для обработки "root" и другой для обработки "test". Обычно я знаю, что вы этого не сделаете, но для этого примера вот классы, которые я создал;
@XmlRootElement
class MyElement {
private String test;
@XmlElement(name="Test")
public String getTest() { return test; }
public void setTest(String test) { this.test = test; }
}
@XmlRootElement(name="Root")
class Root {
private MyElement myElement;
public MyElement getMyElement() { return myElement; }
public void setMyElement(MyElement myElement) { this.myElement = myElement; }
}
Когда я запускаю приведенный ниже код, я всегда получаю нулевое значение для myElement.
@Test
public void testJAXB() throws Exception {
InputStream xmlInputStream = new FileInputStream(new File(".\\files\\test1.xml"));
JAXBContext context = JAXBContext.newInstance(Root.class, MyElement.class);
Unmarshaller um = context.createUnmarshaller();
Root root = (Root) um.unmarshal(xmlInputStream);
Assert.assertTrue(root.getMyElement().getTest().equals("TestStuff"));
}
Может ли кто-нибудь указать мне правильное направление в этом отношении?
Спасибо.