XML pull解析 示例

来源:互联网 发布:python破解rar 编辑:程序博客网 时间:2024/06/11 17:17
package com.example.testdemo.pull;


import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;


import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;


import android.util.Log;


public class PullParserUtils {




public static void parserXMLPULL(String Str){
XmlPullParserFactory xpf;
XmlPullParser parser;
try{
//构建工厂实例
xpf = XmlPullParserFactory.newInstance();
//创建解析对象
parser = xpf.newPullParser();
//将XML文件以流的形式加入,并设置编码格式
// parser.setInput(is, "utf-8");
parser.setInput(new StringReader(Str));
//此时文件刚初始化,所以解析位置时文件开始
//标签name
String nodeName ="";
//text
String nodeText = "";
int type = parser.getEventType();// 此时返回0 也就是START_DOCUMENT  
//返回类型START_DOCUMENT,END_DOCUMENT,START_TAG,END_TAG,TEXT  
while(type != XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_DOCUMENT:
//进行初始化工作
// list = new ArrayList<River>(); 
break;

case XmlPullParser.START_TAG:
nodeName = parser.getName();
Log.i("pull", "nodeName:"+nodeName);
String coursesType66 = parser.getAttributeValue(null, "coursesType");
Log.i("pull", "66coursesType:"+coursesType66);
break;

case XmlPullParser.TEXT:
nodeText = parser.getText();
Log.i("pull", "nodeText:"+nodeText);
if(!"".equals(nodeText)){
//开始进行 nodeName判断
if("requestDownloadUrl".equals(nodeName)){
//<requestDownloadUrl coursesType="China" >http://www.baidu.com</requestDownloadUrl> 
// String coursesType = parser.getAttributeValue(0);
String coursesType = parser.getAttributeValue(null, "coursesType");
Log.i("pull", "coursesType:"+coursesType);

}
}

break;

case XmlPullParser.END_TAG:

break;


default:
break;
}
type = parser.next();//当前解析位置结束,指向下一个位置 
}

}catch(XmlPullParserException e){

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


// public static ASsystemInfo getParserXmlByPull(String inputStream) throws Exception{  
//      // List<ASsystemInfo> books = null;
//       ASsystemInfo news = null;
//        XmlPullParserFactory factory=XmlPullParserFactory.newInstance(); 
//        factory.setNamespaceAware(true);
//        XmlPullParser parser=factory.newPullParser();
//        inputStream = inputStream.replaceAll("&nbsp;", " ");
//        inputStream = inputStream.replaceAll("<br>", "\n");
//        parser.setInput(new StringReader(inputStream.replaceAll("&","&amp;")));
//          
//        int eventType=parser.getEventType(); 
//        String nodeName = ""; 
//          while (eventType != XmlPullParser.END_DOCUMENT) { 
//
//          if (eventType == XmlPullParser.START_DOCUMENT) 
//          { 
//       //   Log.e("===", "START_DOCUMENT"); 
//         // books = new ArrayList<ASsystemInfo>();//初始化books集合  
//          } 
//          else if (eventType== XmlPullParser.START_TAG) 
//          {
//       //   Log.e("===", "START_TAG"); 
//            nodeName = parser.getName(); 
//       if("asSystemInf".equals(nodeName)){
//               news = new ASsystemInfo(); 
//         } 
//获取标签属性值 示例<requestDownloadUrl coursesType="China" >http://www.baidu.com</requestDownloadUrl>
//       if("requestDownloadUrl".equals(nodeName) && news != null)
//             {
//            
//             String coursesType = parser.getAttributeValue(null, "coursesType");
//             if(coursesType != null)
//             news.setCoursesType(coursesType);
//             }
//
//          }  
//          else if(eventType==XmlPullParser.TEXT) 
//          { 
//           String nodeText = parser.getText();
//          
//          if (!"".equals(nodeText.trim()))
//          {
//          //在这里判断nodeName
//        
//                   if("heartPackets".equals(nodeName) && news != null)
//                    {
//                  
//                    news.setHeartPackets(nodeText.trim());
//                    MyApplication.heartPackets_STA=true;
//                    }
//                   if("firstHander".equals(nodeName) && news != null)
//                   {
//                 
//                   news.setFirstHander(nodeText.trim());
//                   MyApplication.firstHander_STA=true;
//                   }
//                   if("currentSWF".equals(nodeName) && news != null)
//                    {
//                  news.setCurrentSWF(nodeText.trim());
//                  MyApplication.currentSWF_STA=true;
//                    }
//                    if("powerType".equals(nodeName) && news != null)
//                    {
//                    news.setPowerType(nodeText.trim());
//                    MyApplication.powerType_STA=true;
//                    }
//                    if("timeSet".equals(nodeName) && news != null)
//                    {
//                    news.setTimeSet(nodeText.trim());
//                    MyApplication.timeSet_STA=true;
//                    }
//                    if("startApp".equals(nodeName) && news != null)
//                    {
//                    news.setStartApp(nodeText.trim());
//                    MyApplication.startApp_STA=true;
//                    }
//
//                    if("requestDownloadUrl".equals(nodeName) && news != null)
//                    {
//                    
//                    news.setRequestDownloadUrl(nodeText.trim());
//                    MyApplication.requestDownloadUrl_STA=true;
//                    }
//                    
//                    if("volume".equals(nodeName) && news != null)
//                    {
//                    String ddd=nodeText.trim();
//                    news.setVolume(ddd);
//                    MyApplication.volume_STA=true;
//                    }
//                    if("backlight".equals(nodeName) && news != null)
//                    {
//                    String ddd=nodeText.trim();
//                    news.setBacklight(ddd);
//                    MyApplication.Backlight_STA=true;
//                    }
//                    
//          
//          }else if(eventType== XmlPullParser.END_TAG) 
//          { 
//           
//          if("asSystemInf".equals(parser.getName())){//判断结束标签元素是否是book
//
//              if(news.getHeartPackets()==""){
//                  
//              }else{
//                // books.add(news);//将book添加到books集合
//              }
//              
//             // news = null;  
//          }  
//          } 
//
//          eventType=parser.next(); 
//          }
//          return news; 
//      }




}


刚开始拿不到标签的属性,原因是在XmlPullParser.TEXT标签内容里面获取,后面重新在XmlPullParser.START_TAG标签开始里面获取解决问题



0 0