在java中创建XML树并将其转换为json对象

在java中创建XML树并将其转换为json对象,java,xml,json,Java,Xml,Json,我试图创建一个能够转换为json的树。但只有一个xpath。当我尝试实现多个xpath时,我无法获得所需的输出。我在这里分享我的实现 private static Document addElemtbypath(List<String> pathList1, List<String> elementList) { Document doc = null; try { DocumentBuil

我试图创建一个能够转换为json的树。但只有一个xpath。当我尝试实现多个xpath时,我无法获得所需的输出。我在这里分享我的实现

private static Document addElemtbypath(List<String> pathList1,
            List<String> elementList) {

        Document doc = null;
        try {
            DocumentBuilderFactory docfactory = DocumentBuilderFactory
                    .newInstance();
            DocumentBuilder docBuilder = docfactory.newDocumentBuilder();
            doc = docBuilder.newDocument();
            Element rootElement = doc.createElement("Tree");
            doc.appendChild(rootElement);

            for (int i = 0; i < pathList1.size(); i++) {
                String pathList = pathList1.get(i);
                String element = elementList.get(i);

                List<String> xpath = new LinkedList<>();
                String[] parts = pathList.split("/");
                for (int j = 0; j < parts.length; j++) {
                    xpath.add(parts[j]);

                }
                System.out.println(xpath);

                Node node = doc.getDocumentElement();
                Document dom = node.getOwnerDocument();
                System.out.println(node);

                for (int k = 0; k < xpath.size(); k++) {
                    XPath xPath = XPathFactory.newInstance().newXPath();
                    NodeList nodes = (NodeList) xPath.evaluate(xpath.get(k),
                            doc.getDocumentElement(), XPathConstants.NODESET);

                    if (nodes.getLength() != 0) {
                        //node = (Node) nodes;   // getting class cast exception
                        continue;                

                    } else {
                        node = node
                                .appendChild(dom.createElement(xpath.get(k)));
                    }
                }
                node.appendChild(dom.createTextNode(element));
                // System.out.println(nodes);
                System.out.println(dom);
                System.out.println(node);

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return doc;

    }
我得到的结果是

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Tree>
    <Product>
        <Organization>
                <RegisteredDetail>
                            <something>product1</something>
                </RegisteredDetail>
        </Organization>
    </Product>
    <Organization>
    <RegisteredDetail>product2</RegisteredDetail>
    </Organization>
</Tree>
正如您所看到的,节点重复出现,我不知道我错在哪里。我想要的输出应该是

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Tree>
    <Product>
        <Organization>
                <RegisteredDetail>
                            product2
                            <something>product1</something>
                </RegisteredDetail>
        </Organization>
    </Product>
</Tree>

在某种程度上,我在第二次迭代时犯了一些错误。

你是在问Java还是JavaScript?你知道这两个类似于火腿和仓鼠吗?我是在问java。上面的代码是用javascript编写的,我已经写过了,我只想知道java中类似类型的方法,这样我就可以在创建dom时避免重复节点。检查我前面的问题及其答案。@endriu_l