我正在为我的 j2me 应用程序使用 kxml 解析器。我正在从手机内存中读取文件并解析 xml 文件以显示数据(具有各种级别的过滤器)。在每个过滤器上,我需要从此文件中读取数据。我第一次创建解析器,每次我都将这个解析器1(引用原始)重新分配给paerser2(用于解析数据)。第一次我得到了正确的答案,但第二次我没有得到文件内容,它显示为空数据。
这是我的代码:
FileConnection fc = (FileConnection)Connector.open(rmsObj.rmsData.elementAt(0).toString());
InputStream in = fc.openInputStream();
InputStreamReader is = new InputStreamReader(in);
commonAppObj.externParser = new XmlParser(is);
commonAppObj 类文件。
protected void fileread() {
try {
if(externParser != null){
parser = externParser;
fileparser(parser);
}else{
InputStream in = this.getClass().getResourceAsStream(this.dataBase);
InputStreamReader is = new InputStreamReader(in);
parser = new XmlParser(is);
fileparser(parser);
}
} catch (IOException ioe) {
} finally {
parser = null;
}
}
private void fileparser(XmlParser parser){
try {
ParseEvent event = null;
dataflag = 0;
dataflagS = 0;
System.out.println("findtags = " + findtags);
while (((event = parser.read()).getType() != Xml.END_DOCUMENT) && (dataflag != 1)) {
if (event.getType() == Xml.START_TAG) {
String name = event.getName();
if (name != null && name.equals(findtags)) {
dataflag = 0;
parseAddressTag(parser);
}
name = null;
}
event = null;
}
} catch (IOException ioe) {
} finally {
parser = null;
}
}
}
最佳答案
如果您的InputStream
在调用 markSupported 时返回 true你可以 reset
它位于 fileparser
方法的末尾,但首先您需要调用 mark
创建后立即进行。
if (in.markSupported()) {
in.mark(in.available());
}
关于parsing - 如何重用j2me kxml解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12472729/