[英]Unmarshal() method of JAXB returns an empty object
注意:此項目使用Java 9中不推薦使用的JAXB。您需要在Java_HOME而不是Java 9中安裝Java8。POM文件已設置好,因此所有依賴項都可以正常工作。 我能夠使用Maven構建程序。 我只是確保功能正常。
我正在將該項目更新為更高版本的scribejava和async-http-client。 這是我的存儲庫(我正在為此工作): https : //github.com/khoanguyen0791/tradeking
我已將錯誤跟蹤到unmarshal()方法。 輸入存在,但是該方法返回一個空對象。 有人可以解釋為什么它返回一個空的JAXB對象以及如何解決它嗎? xml模式在我的存儲庫中。
static public <T> T getElement(InputSource source, String path, String root,
Class<T> clazz) throws Exception {
JAXBContext jaxbContext = JAXBContext.newInstance(path);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(source);
Element element = doc.getDocumentElement();
System.out.println(element == null);
if (root != null) {
NodeList nodeList = element.getChildNodes();
for (int j = 0; j < nodeList.getLength(); j++) {
System.out.println(j);
Node childNode = nodeList.item(j);
if (childNode.getNodeType() == Node.ELEMENT_NODE) {
if (childNode.getNodeName().equals(root)) {
element = (Element) childNode;
break;
}
}
}
}
NodeList nodes = element.getChildNodes();
for (int i = 0; i < nodes.getLength(); i++) {
System.out.println("" + nodes.item(i).getTextContent());
}
JAXBElement<T> t = jaxbUnmarshaller.unmarshal(element, clazz);
return t.getValue();
}
您必須使用了錯誤的JAXBUtils依賴關系(否則版本號錯誤)。 確保在添加斷點, 返回getElement(packageName,response.toString(),root,clazz); 並調試代碼。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.