Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在xmlpullparser中,当多次调用getEventType时,值会发生变化_Android_Xmlpullparser - Fatal编程技术网

Android 在xmlpullparser中,当多次调用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

当我跑了很多次。 我知道“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(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的值会更改是为什么。