Android 在xmlpullparser中,当多次调用getEventType时,值会发生变化
当我跑了很多次。 我知道“xpp.next()”的值已更改 但是,我不理解“xpp.getEventType()”的值也发生了变化 在调试器中执行步骤时,发现值发生了更改 若不中断,则值不会更改Android 在xmlpullparser中,当多次调用getEventType时,值会发生变化,android,xmlpullparser,Android,Xmlpullparser,当我跑了很多次。 我知道“xpp.next()”的值已更改 但是,我不理解“xpp.getEventType()”的值也发生了变化 在调试器中执行步骤时,发现值发生了更改 若不中断,则值不会更改 03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=0 03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=1 03-22 09:35:52.473: I/System.out(360
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=0
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=1
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=2
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=3
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=4
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=5
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=6
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=7
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=8
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=9
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=10
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=11
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=12
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=13
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=14
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=15
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=16
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=17
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=18
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=19
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=20
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=21
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=22
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=23
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=24
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=25
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=26
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=27
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=28
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=29
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=30
为什么要更改该值
package com.example.xmlpulltestapp;
import java.io.IOException;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
public class SimpleXmlPull
{
public static void main() throws XmlPullParserException, IOException {
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader(data));
int event = 0;
int cnt = 0;
event = xpp.getEventType(); log(event, cnt++); // 0 Eclipse Break
event = xpp.getEventType(); log(event, cnt++); // 1
event = xpp.getEventType(); log(event, cnt++); // 2
event = xpp.getEventType(); log(event, cnt++); // 3
event = xpp.getEventType(); log(event, cnt++); // 4
event = xpp.getEventType(); log(event, cnt++); // 5
event = xpp.getEventType(); log(event, cnt++); // 6
event = xpp.getEventType(); log(event, cnt++); // 7
event = xpp.getEventType(); log(event, cnt++); // 8
event = xpp.getEventType(); log(event, cnt++); // 9
event = xpp.getEventType(); log(event, cnt++); // 10
event = xpp.getEventType(); log(event, cnt++); // 11
event = xpp.getEventType(); log(event, cnt++); // 12
event = xpp.getEventType(); log(event, cnt++); // 13
event = xpp.getEventType(); log(event, cnt++); // 14
event = xpp.getEventType(); log(event, cnt++); // 15
event = xpp.getEventType(); log(event, cnt++); // 16
event = xpp.getEventType(); log(event, cnt++); // 17
event = xpp.getEventType(); log(event, cnt++); // 18
event = xpp.getEventType(); log(event, cnt++); // 19
event = xpp.getEventType(); log(event, cnt++); // 20
event = xpp.getEventType(); log(event, cnt++); // 21
event = xpp.getEventType(); log(event, cnt++); // 22
event = xpp.getEventType(); log(event, cnt++); // 23
event = xpp.getEventType(); log(event, cnt++); // 24
event = xpp.getEventType(); log(event, cnt++); // 25
event = xpp.getEventType(); log(event, cnt++); // 26
event = xpp.getEventType(); log(event, cnt++); // 27
event = xpp.getEventType(); log(event, cnt++); // 28
event = xpp.getEventType(); log(event, cnt++); // 29
event = xpp.getEventType(); log(event, cnt++); // 30
}
static String data ="<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<ttFont sfntVersion=\"\\x00\\x01\\x00\\x00\" ttLibVersion=\"2.4\">"
+ "<cmap>"
+ "<tableVersion version=\"0\"/>"
+ "<cmap_format_4 platformID=\"0\" platEncID=\"3\" language=\"0\">"
+ "<map code=\"0x20\" name=\"space\"/>"
+ "<map code=\"0x21\" name=\"exclam\"/>"
+ "<map code=\"0x22\" name=\"quotedbl\"/>"
+ "<map code=\"0x23\" name=\"numbersign\"/>"
+ "<map code=\"0x24\" name=\"dollar\"/>"
+ "</cmap_format_4>"
+ "<cmap_format_6 platformID=\"1\" platEncID=\"0\" language=\"0\">"
+ "<map code=\"0x20\" name=\"space\"/>"
+ "<map code=\"0x21\" name=\"exclam\"/>"
+ "<map code=\"0x22\" name=\"quotedbl\"/>"
+ "<map code=\"0x23\" name=\"numbersign\"/>"
+ "<map code=\"0x24\" name=\"dollar\"/>"
+ "</cmap_format_6>"
+ "<cmap_format_4 platformID=\"3\" platEncID=\"1\" language=\"0\">"
+ "<map code=\"0x20\" name=\"space\"/>"
+ "<map code=\"0x21\" name=\"exclam\"/>"
+ "<map code=\"0x22\" name=\"quotedbl\"/>"
+ "<map code=\"0x23\" name=\"numbersign\"/>"
+ "<map code=\"0x24\" name=\"dollar\"/>"
+ "</cmap_format_4>"
+ "</cmap>"
+ "</ttFont>";
}
这是不执行步骤时的日志。
eventType的值不会更改
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=0
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=1
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=2
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=3
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=4
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=5
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=6
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=7
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=8
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=9
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=10
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=11
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=12
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=13
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=14
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=15
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=16
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=17
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=18
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=19
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=20
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=21
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=22
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=23
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=24
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=25
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=26
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=27
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=28
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=29
03-22 09:35:52.473: I/System.out(3605): EventType=2 Cnt=30
getEventType()
方法根据当前正在解析的XML部分返回一个静态变量。对于next()
方法也是如此,它本质上与getEventType()
方法相同,并且可以解释值更改的原因。它不打算以您实现它的方式被多次调用。从以下代码中可以看到,您可以根据getEventType()
/next()
方法返回值切换操作:
int eventType = xpp.getEventType();
while(eventType != XmlPullParser.END_DOCUMENT) { // Keep iterating unless the current eventType is the end of the document
if(eventType == XmlPullParser.START_DOCUMENT) { // Switch action based on the current eventType value
System.out.println("Start document");
} else if(eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag "+xpp.getName());
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next(); // Set the current event type from the return value of next()
}
我不完全确定你在问什么。你能详细说明一下吗?如果您只是想知道为什么
getEventType()
会更改,那么每次调用next()
时都会有所不同,否则,我不知道您想要什么。当您在eclipse的调试器步骤中运行时,我不知道当不调用next()时getEventType的值会更改是为什么。