Eri*_* B. 16 debugging jaxb unmarshalling
我遇到了JAXB unmarshalling的问题.我想我已正确编码,但我的unmarshalled对象返回null参数.因此,我假设在解组时,JAXB没有看到它期望的适当的XML结构.但是,我没有收到任何错误消息或抛出任何异常.
无论如何都要逐步完成解组过程,看看它确实在哪里/为什么没有填充我的对象?
实际的解组代码相当普通:
public <T> T unmarshall(Node node, Class<T> clazz) throws JAXBException {
// Creating an unmarshaller
Unmarshaller u = JAXBContext.newInstance(clazz).createUnmarshaller();
// unmarshal an instance node into Java content
return clazz.cast(u.unmarshal(node, clazz).getValue());
}
Run Code Online (Sandbox Code Playgroud)
但是,当我调用它时,我得到一个返回类型clazz的对象(如预期的那样),但是没有填充.
我试图解组的DOM对象是由第三方API生成的.我已经遇到了一些非常奇怪的解组行为,这就是为什么我希望能够调试这个过程.例如,如果我尝试解组DOM对象中的子元素(即:doc.getByElementName("myElement").item(0)),它将以静默方式失败.但是,如果我将文档转换为字符串,并将其重新导入到新文档中,那么它可以很好地转换它.
我不知道如何调试此问题,我开始感到非常沮丧.
感谢您的任何见解!
埃里克
Ove*_*eer 13
JAXBContext context = JAXBContext.newInstance(jaxbObjectClass);
Unmarshaller unmarshaller = context.createUnmarshaller();
unmarshaller.setEventHandler(new javax.xml.bind.helpers.DefaultValidationEventHandler());
Run Code Online (Sandbox Code Playgroud)
您可以采用的一种方法是使用JAXB从带注释的类生成XML模式.这表示JAXB期望输入文档的外观.然后根据此XML模式验证XML文档,看它是否符合JAXB的期望.
| 归档时间: |
|
| 查看次数: |
13725 次 |
| 最近记录: |