gpt4 book ai didi

java - 当使用硬编码值时,只有 XML 解析器在工作

转载 作者:行者123 更新时间:2023-12-02 00:34:41 26 4
gpt4 key购买 nike

这是我的程序,我正在使用 STAX Parser 来解析 XML 文档。当我使用硬编码值时,只有它的工作(item.account =“sss”;)但是当我尝试使用时item.account = eventReader.getElementText();列表的大小为0(列表项 = new ArrayList();)

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 ;
}

最佳答案

因为你的结束事件被“吃掉”并且 if (event.isEndElement()) 从未被触发。但是,当您硬编码时,会触发“if (event.isEndElement())”,因为缺少“eventReader.getElementText()”。

关于java - 当使用硬编码值时,只有 XML 解析器在工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8146715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com