【问题标题】:Android - Pull ParserAndroid - 拉解析器
【发布时间】:2011-04-11 02:29:06
【问题描述】:

我有一个 xml 文件,我想解析它以仅获取学生 ID 和学生姓名。

<students>
    <student>
         <id type="integer">101</id>
         <name>James</name>
         <degree>
             <id type="integer">1978271</id>
             <name>SCJP</name>
         </degree>
    </student>
    <student>
         <id type="integer">102</id>
         <name>Joseph</name>
         <degree>
             <id type="integer">1978272</id>
             <name>MCST</name>
         </degree>
    </student>
</students>

代码:

while (eventType != XmlPullParser.END_DOCUMENT) {
    parser.next();
    eventType = parser.getEventType();
    switch (eventType){
    case XmlPullParser.START_TAG:   
         tag_name = parser.getName();
         if(tag_name.equalsIgnoreCase("ID")){
              stud_id = parser.nextText().toString();
              Log.i("Id = ", pid);
          } else if (tag_name.equalsIgnoreCase("name")){
              stud_name = parser.nextText().toString();
          } 
          break;
     }
} 

我的问题: 当我使用上面的代码解析XML 文件时,我得到了IDs(即student-iddegree-id),所以使用Pull-parser, 我应该以哪种方式解析 XML 文件以获取只有 Student-id 的列表`

【问题讨论】:

    标签: android xml xml-parsing android-xmlpullparser android-pullparser


    【解决方案1】:

    当您遇到匹配“student”的起始标签时,将一些布尔变量(例如称为 insideStudent)设置为 true。同样,当您遇到“度”标签时,将另一个 insideDegree 变量设置为 true。当你有一个结束标签时,将它们设置为 false(例如,如果你有 &lt;/student&gt;,那么你将 insideStudent 设置为 false)。现在,当您遇到 ID 标签时,您只需要检查您是仅在学生内部还是在学位和学生内部。比如:

    if(tag_name.equalsIgnoreCase("ID")){
        // Get student ID
        if (insideStudent && !insideDegree) {
              stud_id = parser.nextText().toString();
              Log.i("Id = ", pid);
        }
    } 
    

    【讨论】:

    • 抱歉,您的回答迟到了,我已经这样做了,我声明了整数变量,使它们在开始/结束标记上为 0 和 1。感谢支持
    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多