Только один элемент добавляется в ArrayList при анализе XML - PullRequest
0 голосов
/ 16 ноября 2011

Может кто-нибудь сказать мне, почему у меня только один элемент внутри ArrayList, называемый как элементы. Только один элемент добавляется к anArraylis при анализе XML. Это мой код

А также

 if (startElement.getName().toString().equals("accountid")){
 pos.account = 
}

Как видите, из запроса попало

import java.io.FileNotFoundException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class StaXParser {

    @SuppressWarnings({ "unchecked", "null" })
    public static void main(String args[]) {

        List<Position> items = new ArrayList<Position>();
        try {

            String documentAsString = "<request>\r\n" + "<accountid>12333</accountid>\r\n" + "<accountid>123</accountid>\r\n" + "</request>";
            StringReader stringReadertext = new StringReader(documentAsString);
            XMLInputFactory inputFactory = XMLInputFactory.newInstance();
            XMLStreamReader reader = inputFactory.createXMLStreamReader(stringReadertext);

            XMLEventReader eventReader = inputFactory.createXMLEventReader(reader);

            Position pos = null;

            while (eventReader.hasNext()) {
                XMLEvent event = eventReader.nextEvent();

                if (event.isStartElement()) {
                    StartElement startElement = event.asStartElement();
                    if (startElement.getName().toString().equals("request"))
                        pos = new Position();
                    if (startElement.getName().toString().equals("accountid")) {
                        // System.out.println("yes");
                        pos.account = eventReader.getElementText().toString();
                        System.out.println("first" + pos.account);
                    }
                    if (startElement.getName().toString().equals("userid"))
                        pos.accountType = eventReader.getElementText(); // Mapped
                    // to
                    // userid
                }

                if (event.isEndElement()) {
                    EndElement endElement = event.asEndElement();
                    if (endElement.getName().toString().equals("request")) {
                        // System.out.println("also");
                        items.add(pos);
                    }
                }

            }

            Iterator itr = items.iterator();
            while (itr.hasNext()) {

                // System.out.println("ssssssss");
                Position posss = (Position) itr.next();
                System.out.println(posss.account);
            }
        }

        catch (XMLStreamException e) {
            e.printStackTrace();
        }

    }

}
...