Android Java中的EventType究竟是什么?

时间:2016-06-15 15:51:40

标签: java android xml-parsing

正如问题标题所示,EventType在Android Java中究竟做了什么? 我遇到了一个关于XML Parsing的Android开发教程,它似乎在其中起着至关重要的作用。 我从来没有真正理解它的作用,为什么它有助于XML解析。 请用简单的英语解释,因为我不是英语母语人士lol,非常感谢。

1 个答案:

答案 0 :(得分:1)

EventType本质上是XML文档中的一个内容块,其中包含某种重要数据。所以这可能是一个标签,一些文本等。Android XmlPullParser docs这样解释:

  

解析器的当前事件状态可以通过调用来确定   getEventType()方法。最初,解析器位于START_DOCUMENT中   状态。

     

方法next()将解析器推进到下一个事件。 int值   从next返回确定当前的解析器状态并且是   与以下对getEventType的调用返回的值相同   ()。

通常,XML解析器的工作方式是,您遍历文档以查找"事件,"哪些是兴趣点。换句话说,您希望逐个字符地逐个浏览文档,直到您看到感兴趣的内容,例如开始标记或类似内容。当您找到一个事件时,您希望解析器停止并为您识别该事件,以便您知道如何处理它。这个过程通常看起来像这样:

int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
    if(eventType == XmlPullParser.START_DOCUMENT) {
      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();
}
System.out.println("End document");

所以在这段代码中,我们允许解析器遍历文档,停止每个"事件" (兴趣点)。然后我们检查事件,如果它像标签一样,我们会读取标签的名称 - 如果它是文本,我们会阅读文本等等。所以基本上你找到一个&#34 ;事件"你想要的,然后你读取事件包含的内容。

但实质上,一个事件只是你在文档中的位置......它可能是文档的开头,文档的结尾,一个标签,一些文本等。事件类型只是区分我们可以期待的不同类型。各种事件类型通常存储在静态常量中,类似于XmlPullParser的工作方式。所以有一个你可以期待的事件清单,你只需要检查一下你到达的那个。

希望有所帮助。