注意:此项目使用Java 9中不推荐使用的JAXB。您需要在JAVA_HOME中使用Java 8而不是Java 9. 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();
}
答案 0 :(得分:0)
您必须使用错误的JAXBUtils依赖项(否则错误的版本号)。确保添加断点, 返回getElement(packageName,response.toString(),root,clazz); 并调试代码。 希望这会有所帮助。