これは自分のプログラムです 私はSTAXパーサーを使用してXML文書を解析しています。 ハードコードされた値を使用すると、その作業(item.account = "sss";)のみ を試みると、いつitem.account = eventReader.getElementText(); リストのサイズが0 です(リストアイテム=新しいArrayListを();)ハードコードされた値のみXMLパーサーが動作しています
import java.io.StringReader;
import java.util.*;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public class Pavan {
static final String DATE = "date";
static final String ITEM = "item";
static final String MODE = "mode";
static final String UNIT = "unit";
static final String CURRENT = "current";
static final String INTERACTIVE = "interactive";
@SuppressWarnings({ "unchecked", "null" })
public static void main(String args[]) {
List<Position> items = new ArrayList<Position>();
try {
String documentAsString = "<request>\r\n" + "<accountid>1234</accountid>\r\n" + "<accountid>234</accountid>\r\n" + "</request>";
StringReader stringReadertext = new StringReader(documentAsString);
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLStreamReader reader = inputFactory.createXMLStreamReader(stringReadertext);
XMLEventReader eventReader = inputFactory.createXMLEventReader(reader);
Position item = null;
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
StartElement startElement = event.asStartElement();
if (startElement.getName().toString().equals("accountid")) {
item = new Position();
item.account = "sss";
//item.account = eventReader.getElementText();
}
}
// If we reach the end of an item element we add it to the list
if (event.isEndElement()) {
EndElement endElement = event.asEndElement();
if (endElement.getName().toString().equals("accountid")) {
items.add(item);
}
}
}
} catch (XMLStreamException e) {
e.printStackTrace();
}
System.out.println(items.size());
}
}
class Position
{
String account ;
}
PeterPeiGuoさん、どうしてevent.isEndElement()が正しく呼び出されていないのですか? if(event.isEndElement()){ EndElement endElement = event.asEndElement(); System.out.println(endElement.getName()。getLocalPart()); }これは呼び出され、印刷要求のみですが、accountidではなく、なぜですか?? – Revathi
私はタグの数をキャプチャしてリストに追加する必要があるようなサンプルXMLだけを投稿したので、 – Revathi
Peterありがとうございました。 – Revathi