现在的位置: 首页 > 综合 > 正文

No 93 · android xml的生成和解析

2014年02月12日 ⁄ 综合 ⁄ 共 2473字 ⁄ 字号 评论关闭
package Sys.ext;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;
import Sys.model.UserInfoXML;

public class XmlLoad {
	//创建生成的xml的存储路径
	/** 
     *  
     * @return 生成的xml文件 
     */  
    public static String CreateXml(UserInfoXML uInfo){          
        StringWriter stringWriter = new StringWriter();  
        ArrayList<UserInfoXML> arrList = new ArrayList<UserInfoXML>();         
        arrList.add(uInfo);        
        try {  
            // 获取XmlSerializer对象   
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  
            XmlSerializer xmlSerializer = factory.newSerializer();  
            // 设置输出流对象  
            xmlSerializer.setOutput(stringWriter);  
            /* 
             * startDocument(String encoding, Boolean standalone)encoding代表编码方式 
             * standalone  用来表示该文件是否呼叫其它外部的文件。 
             * 若值是 ”yes” 表示没有呼叫外部规则文件,若值是 ”no” 则表示有呼叫外部规则文件。默认值是 “yes”。 
             */  
            xmlSerializer.startDocument("GBK", true);
            xmlSerializer.startTag(null, "UserInfoXML");
            for(UserInfoXML userInfo:arrList){
            	xmlSerializer.startTag(null, "UserId");
                xmlSerializer.text("");
                xmlSerializer.endTag(null, "UserId");
                xmlSerializer.startTag(null, "LoginName");
                xmlSerializer.text(userInfo.getLoginName());
                xmlSerializer.endTag(null, "LoginName");
                xmlSerializer.startTag(null, "Password");  
                xmlSerializer.text(userInfo.getLoginPass());  
                xmlSerializer.endTag(null, "Password");
            }
            xmlSerializer.endTag(null, "UserInfoXML");  
            xmlSerializer.endDocument();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return stringWriter.toString();
    }    		    
    /**
     * xmlPullParser解析xml字符串  
     */
    public static String AnalysisXml(String xml){
    	String returnStr="";    	
  	  	ByteArrayInputStream tInputStringStream = null;
  	  	try
  	  	{
  	  		if (xml != null && !xml.trim().equals("")) {
  	  			tInputStringStream = new ByteArrayInputStream(xml.getBytes());
  	  		}
  	  	}
  	  	catch (Exception e) {
  	  		// TODO: handle exception  	  		
  	  		returnStr= e.getMessage();
  	  	}
  	  	XmlPullParser parser = Xml.newPullParser();
  	  	try {
  	  		parser.setInput(tInputStringStream, "UTF-8");
  	  		int eventType = parser.getEventType();
  	  		while (eventType != XmlPullParser.END_DOCUMENT) {  	  			
  	  			switch (eventType) {
	  	  			case XmlPullParser.START_DOCUMENT:// 文档开始事件,可以进行数据初始化处理
	  	  				// persons = new ArrayList<Person>();	  	  				
	  	  				break;
	  	  			case XmlPullParser.START_TAG:// 开始元素事件	
	  	  				String name = parser.getName();
	  	  				if (name.equalsIgnoreCase("InfoStatus")) {
	  	  					returnStr = parser.nextText();
	  	  				}
	  	  				break;
	  	  			case XmlPullParser.END_TAG:// 结束元素事件
	  	  				break;
  	  			}
  	  			eventType = parser.next();
  	  		}
  	  		tInputStringStream.close();
  	  	} catch (XmlPullParserException e) {
  	  		// TODO Auto-generated catch block
  	  		e.printStackTrace();
  	  	} catch (IOException e){
  	  		// TODO Auto-generated catch block
  	  		e.printStackTrace();
  	  	}
  	  	return returnStr;
    }
}

 

【上篇】
【下篇】

抱歉!评论已关闭.