Метод Unmarshal () JAXB возвращает пустой объект - PullRequest
0 голосов
/ 27 мая 2018

Примечание: этот проект использует JAXB, который устарел в Java 9. Вам нужно иметь Java 8 в вашем JAVA_HOME вместо 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();
}

1 Ответ

0 голосов
/ 27 мая 2018

Вы, должно быть, используете неверную зависимость JAXBUtils (или же неверную версию нет.).Обязательно добавьте точку останова в , верните getElement (packageName, response.toString (), root, clazz); и отладьте код.Надеюсь, это поможет.

...