Android Studio中的XML DOMParser无法将相等节点的列表解析为对象列表

时间:2018-12-13 12:33:52

标签: android xml domparser

我有一个Profesor2对象列表。我正在尝试从资产文件夹中读取xml文件“ listaprof3.xml”,并根据XML数据创建其他Profesor2对象。

此外,对象Profesor2具有以下属性,它们都是String类型:nume,prenume,用户名,parola,email,sex,dept,datan和以下2个属性:private ArrayList listaGrupe;私有ArrayList listaTeste;。如果我正在使用没有最后两个属性的对象测试基础代码,那么它会很好地工作。 Class Test有一个字段:String nume;

代码读取了我的String值,但是当尝试读取标签“ LISTAGRUPE”内的标签为“ GRUPA”的对象以及标签“ LISTATESTE”内的标签为“ TEST”的对象时出现问题不知道为什么。我尝试了许多事情,并发表了评论。预先谢谢你。

我想读取所有GRUPA并将其添加到listaGrupe arraylist,然后将其传递给我的对象,然后将所有测试添加到listaTeste arraylist中以进行相同的操作。

Java代码:

public class Main3Activity extends Activity {

private List<Profesor2> listaProfesori2 = new ArrayList<>();
private ArrayList<Integer> listaGrupe = new ArrayList<>();
private ArrayList<Test> listaTeste = new ArrayList<>();
private TextView listaa;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);

    listaa=findViewById(R.id.textView3);

    try {

        InputStream is = getAssets().open("listaprof3.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(is);

        Element element=doc.getDocumentElement();
        element.normalize();

        NodeList nList = doc.getElementsByTagName("PROFESOR");
        for (int i=0; i<nList.getLength(); i++) {

            Node node = nList.item(i);
            if (node.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) node;
                Profesor2 prof = new Profesor2();

                prof.setNume(eElement.getElementsByTagName("NUME").item(0).getTextContent());
                prof.setPrenume(eElement.getElementsByTagName("PRENUME").item(0).getTextContent());
                prof.setUsername(eElement.getElementsByTagName("USERNAME").item(0).getTextContent());
                prof.setPassword(eElement.getElementsByTagName("PAROLA").item(0).getTextContent());
                prof.setEmail(eElement.getElementsByTagName("EMAIL").item(0).getTextContent());
                prof.setSex(eElement.getElementsByTagName("SEX").item(0).getTextContent());
                prof.setDept(eElement.getElementsByTagName("DEPT").item(0).getTextContent());
                prof.setDataNasterii(eElement.getElementsByTagName("DATAN").item(0).getTextContent());

/*
                   NodeList lgrupe = eElement.getElementsByTagName("LISTAGRUPE");
                    for (int j = 0; i < lgrupe.getLength(); j++) {
                        Node nodchild = lgrupe.item(j);
                        if (nodchild.getNodeType() == Node.ELEMENT_NODE) {
                            String value = nodchild.getTextContent();
                            int grupa = Integer.parseInt(value);
                            listaGrupe.add(grupa);
                        }
                    }*/
/*
                    NodeList lgrupe = eElement.getElementsByTagName("LISTAGRUPE");
                    for(int j=0;i<lgrupe.getLength();j++) {
                        Node childgrupa = lgrupe.item(j);
                        if(childgrupa.getNodeName().equals("GRUPA")) {
                            int grupa = Integer.parseInt(lgrupe.item(j).getTextContent());
                            listaGrupe.add(grupa);
                        }
                    }*/

                  /* NodeList lgrupe = eElement.getElementsByTagName("LISTAGRUPE");
                    for(int j=0;i<lgrupe.getLength();j++) {
                        Node childgrupa = lgrupe.item(j);
                        if (childgrupa.getNodeType() == Node.ELEMENT_NODE) {
                            Element grupa = (Element) childgrupa;
                            NodeList listgrupe = grupa.getElementsByTagName("GRUPA");
                            Element namegrupa = (Element) listgrupe.item(0);
                            int grupa1 = Integer.parseInt(namegrupa.getTextContent());
                            listaGrupe.add(grupa1);
                        }
                    }*/

                    // String Lgrupe = eElement.getElementsByTagName("LISTAGRUPE").item(0).getTextContent();
                   /* Node grupe = nList.item(8);
                    NodeList lgrupe = grupe.getChildNodes();
                    for(int j=0;j<lgrupe.getLength();j++) {
                        Node nodgrupa = lgrupe.item(i);
                        if(nodgrupa.getNodeType()==Node.ELEMENT_NODE) {
                            Element grElem = (Element) nodgrupa;

                            int grupa1 = Integer.parseInt(grElem.getElementsByTagName("GRUPA").item(0).getTextContent());
                        }
                    }*/

                    //Node grupe = nList.item(8);
                   /*Node childgrupa = grupe.getFirstChild();

                   while(childgrupa.getNextSibling()!=null) {
                       childgrupa=childgrupa.getNextSibling();
                       if(childgrupa.getNodeName().equals("GRUPA")) {
                           Element grElem = (Element) childgrupa;
                           int grupa1 = Integer.parseInt(grElem.getElementsByTagName("GRUPA").item(0).getTextContent());
                           int grupa2 = Integer.parseInt(grElem.getElementsByTagName("GRUPA").item(0).getTextContent());
                           int grupa3 = Integer.parseInt(grElem.getElementsByTagName("GRUPA").item(0).getTextContent());

                       }
                   }*/



                    //prof.setListaGrupe(null);

                    //Node teste = nList.item(9);
                   /*NodeList lteste = teste.getChildNodes();
                   for(int k=0;k<lteste.getLength();k++) {
                       Node childtest = lteste.item(k);
                       if(childtest.getNodeName().equals("TEST")) {
                           Test test = new Test();
                           test.setTitlu(lteste.item(k).getTextContent());
                           listaTeste.add(test);
                       }
                   }
*/
                    //prof.setListaTeste(null);

                    listaProfesori2.add(prof);
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }


        StringBuilder builder = new StringBuilder();
        for (Profesor2 p:listaProfesori2) {
            builder.append(p.toString() + "\n");
            builder.append("\n");
        }

        listaa.setText(builder.toString());
    }

    private static String getValue(String tag, Element element) {
        NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
        Node node = (Node) nodeList.item(0);
        return node.getNodeValue();
    }

}

XML文件:

<?xml version="1.0"?>
<LISTAPROFESORI>
        <PROFESOR>
            <NUME>Stroe</NUME>
            <PRENUME>Sorin</PRENUME>
            <USERNAME>StroeS</USERNAME>
            <PAROLA>profxml</PAROLA>
            <EMAIL>sorinstroe@gmail.com</EMAIL>
            <SEX>masc</SEX>
            <DEPT>Finante</DEPT>
            <DATAN>16/05/1976</DATAN>
            <LISTAGRUPE>
                <GRUPA>1066</GRUPA>
                <GRUPA>1070</GRUPA>
                <GRUPA>1071</GRUPA>
            </LISTAGRUPE>
            <LISTATESTE>
                <TEST>t1</TEST>
                <TEST>t2</TEST>
                <TEST>t3</TEST>
            </LISTATESTE>
        </PROFESOR>
        <PROFESOR>
            <NUME>Enache</NUME>
            <PRENUME>Maria</PRENUME>
            <USERNAME>EnacheM</USERNAME>
            <PAROLA>profxml222</PAROLA>
            <EMAIL>enachemaria@gmail.com</EMAIL>
            <SEX>fem</SEX>
            <DEPT>Finante</DEPT>
            <DATAN>12/01/1955</DATAN>
            <LISTAGRUPE>
                <GRUPA>1065</GRUPA>
                <GRUPA>1067</GRUPA>
                <GRUPA>1068</GRUPA>
            </LISTAGRUPE>
            <LISTATESTE>
                <TEST>t3</TEST>
                <TEST>t4</TEST>
            </LISTATESTE>
        </PROFESOR>
        <PROFESOR>
            <NUME>Mihalache</NUME>
            <PRENUME>Ionut</PRENUME>
            <USERNAME>MihalacheIonut</USERNAME>
            <PAROLA>profxml785643</PAROLA>
            <EMAIL>mihalacheionut@gmail.com</EMAIL>
            <SEX>masc</SEX>
            <DEPT>Baze de date</DEPT>
            <DATAN>06/05/1971</DATAN>
            <LISTAGRUPE>
                <GRUPA>1067</GRUPA>
                <GRUPA>1068</GRUPA>
                <GRUPA>1070</GRUPA>
            </LISTAGRUPE>
            <LISTATESTE>
                <TEST>t5</TEST>
                <TEST>t6</TEST>
                <TEST>t7</TEST>
            </LISTATESTE>
        </PROFESOR>
        <PROFESOR>
            <NUME>Vintila</NUME>
            <PRENUME>Oana</PRENUME>
            <USERNAME>VintilaO</USERNAME>
            <PAROLA>profxml1113</PAROLA>
            <EMAIL>vintilaoana@gmail.com</EMAIL>
            <SEX>fem</SEX>
            <DEPT>Baze de date</DEPT>
            <DATAN>19/11/1986</DATAN>
            <LISTAGRUPE>
                <GRUPA>1065</GRUPA>
                <GRUPA>1069</GRUPA>
                <GRUPA>1076</GRUPA>
            </LISTAGRUPE>
            <LISTATESTE>
                <TEST>t8</TEST>
            </LISTATESTE>
        </PROFESOR>
</LISTAPROFESORI>

0 个答案:

没有答案