Java 读取XML并创建列表以保存数据

Java 读取XML并创建列表以保存数据,java,xml,list,readxml,Java,Xml,List,Readxml,我需要读取一个xml,并从该数据创建一个类似于xml层次结构的列表。由于xml结构可以更改,我不得不使用递归方法 但我的问题是我无法创建类似于xml的列表。我不知道如何将xml数据保存在列表中。 谢谢 List parentList=new ArrayList(); List templast=new ArrayList(); private void GetChildrenRecursive(OMFactory fac、OmeElement rootElement、迭代器childElemen

我需要读取一个xml,并从该数据创建一个类似于xml层次结构的列表。由于xml结构可以更改,我不得不使用递归方法

但我的问题是我无法创建类似于xml的列表。我不知道如何将xml数据保存在列表中。 谢谢

List parentList=new ArrayList();
List templast=new ArrayList();
private void GetChildrenRecursive(OMFactory fac、OmeElement rootElement、迭代器childElement、List elementList){
OmeElement innerElementValue=null;
OmeElement innerElement=null;
while(childElement.hasNext()){
innerElement=(OmeElement)childElement.next();
字符串innerElementLN=innerElement.getLocalName();
字符串innerElementText=innerElement.getText();
//创建包含子元素的新OmeElement
innerElementValue=CreateNewOmeElement(innerElementLN,innerElement.getAllDeclaredNamespaces(),innerElementText,fac);
//递归地得到孩子
if(innerElement.getChildElements().hasNext()){
//parentList.add(innerElementValue);
GetChildrenRecursive(fac、rootElement、innerElement.getChildElements()、elementList);
}
否则{
添加(innerElementValue);
}
}   
//两个列表的内部包含的TODO
对于(int x=0;x

谢谢。

有什么原因不只是为了这个而使用JAXB吗?试试XPATH。这样比较容易穿越。
List<OMElement> parentList = new ArrayList<OMElement>();
List<OMElement> tempList = new ArrayList<OMElement>();

private void getChildrenRecursively(OMFactory fac, OMElement rootElement,Iterator childElement,List<OMElement> elementList) {



        OMElement innerElementValue =null;
        OMElement innerElement = null;

        while (childElement.hasNext()) {
            innerElement = (OMElement) childElement.next();
            String innerElementLN = innerElement.getLocalName();
            String innerElementText = innerElement.getText();

            // Creates the new OMElement including the child element
    innerElementValue = createNewOMElement(innerElementLN,innerElement.getAllDeclaredNamespaces(), innerElementText,fac);

            // Get children recursively
            if(innerElement.getChildElements().hasNext()){  


             //    parentList.add(innerElementValue);              
                             getChildrenRecursively(fac,rootElement,innerElement.getChildElements(),elementList);               
            }
            else{
                tempList.add(innerElementValue);    
            }

        }   

        // TODO include for inside for two lists
        for (int x = 0; x < tempList.size(); x++) {
            if (rootElement.getFirstElement().getFirstElement() != null) {
                rootElement.getFirstElement().getFirstElement().addChild(tempList.get(x));
            }
        }
        // Creates a list of elements
        elementList.add(rootElement);   
    }