XML DOMParser в Android Studio не анализирует список равных узлов в списке объектов - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть список объектов Profesor2.Я пытаюсь прочитать XML-файл "listaprof3.xml" из папки активов и создать другие объекты Profesor2 из данных XML.

Кроме того, у объекта Profesor2 есть следующие атрибуты, все они имеют тип String: число, prenume, имя пользователя, пароль, адрес электронной почты, пол, dept, datan и следующие 2 атрибута: private ArrayList listaGrupe;private ArrayList listaTeste ;.Если я тестирую базовый код с объектом без этих двух последних атрибутов, он работает хорошо.Класс Test имеет одно поле: номер строки;

Код читает мои значения String, но возникает проблема при попытке прочитать объекты с тегом «GRUPA» внутри тега «LISTAGRUPE» и объекты с тегом «TEST» внутри тега «LISTATESTE»и я не понимаю почему.Я перепробовал много вещей, которые я поставил в качестве комментариев.Заранее благодарю.

Я хочу прочитать все GRUPA и добавить их в arraylist listaGrupe, который я передаю после этого моему объекту, и все TEST, которые я хочу добавить в arraylist listaTeste, чтобы сделать то же самое.

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>
...