关于XML文件解析的学习软件PULL解析方法

本人第一次分享资源,写得不好,大家不要见怪。这是这个文件里面的一段解释注释,我贴上来吧: /* @Title:XML文件中属性的解析修改
  * @Introduction:使用PULL方法进行XML解析
  *     XML文件存放在SDcard根目录下;android1.6版本之前是在/sdcard/,之后是在/mnt/sdcard/
  *     当前测试用来运行的版本是android。4.2.2
  *     最小支持的版本是android.2.2.0 
  *     文件名字分别为:local_serial_num.xml存放本机序列号
  *                                                                 serial_number_src.xml存放取号序列池的最大值和最小值
  *     完成功能有:启动后自动读取本机序列号,从本地XML文件中,并显示该序列号
  *     如果本机没有序列号,就从序列号池获取一个号,设置到本机,并显示新序列号。
  *     可以设置序列号池的起始值和终止值并保存进取号序列池文件中
  *     如果这两个文件中缺少任何一个,都将在本地上述指定目录自动生成
  * @Attention: 空字符串初始化String = null;
  *                                   和字符串初始化String = ""
  *         区别在于:一个是没有初始化的对象是空的,还不能调用String类的封装函数因而只能用String == null来进行判断
  *                         一个是已经初始化的对象能调用类似isEmpty()的操作进行判断,不过是一个长度length为0的字符串
  * @Date:2014-08-08
  * @Author:Wanney
  * @Version:1.0

  */


关键的代码我把它封装在里面了,也没什么说的,注释得很清楚。但是照着看就好了。

// 标准的PULL解析XML文件的一般步骤:
		// 打开文件变成InputStream,然后再setInput,到XmlPullParser类。
		// 【打开不同路径的文件形式不一样但是都能变成InputStream,
		// 	除了一种情况:在res/xml目录(该目录默认是没有的需要自己在工程中新建文件夹)下:
		// 	XmlResourceParser xmlParser = this.getResources().getXml(R.xml.XXX);
		// 	调用该函数可以直接到 XmlPullParser类。
		// 	缺点:目前我还没想到这种保存在包内的文件怎么去修改和重写,所以我放弃了,
		// 	感觉不会适用,这个软件是用来寻找本机序列号,如果在包内,那么跟本机的关系就不会太大了!】
		// 这时用switch形式判断事件类型再分情况进行操作
		public void parseXMLImportantPart(String[] Value,String Path,String FileName,boolean  flag,XmlSerializer serializer){
			int i;
			XmlPullParser XMLParser = Xml.newPullParser();
			attributeValue = new String[attributeNameLength];
			InputStream is = null;
			try {
				is = new FileInputStream(Path + FileName);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
			try {
				XMLParser.setInput(is, "utf-8");
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			}

			try {
				int eventType = XMLParser.getEventType();
				if(flag)serializer.setOutput(stringWriter);
				while (eventType != XmlPullParser.END_DOCUMENT) {
					switch (eventType) {
					case XmlPullParser.START_DOCUMENT:
						if(flag)serializer.startDocument("utf-8", true);     //开始按情况记录当前XML文件的节点信息;
						break;
					case XmlPullParser.START_TAG:
						String tagName = XMLParser.getName();
						if(flag)serializer.startTag("",tagName);
						if(tagName.equals(this.tagName));
						for(i = 0;i < attributeNameLength;i ++){
							if(flag){
								serializer.attribute("",attributeName[i],Value[i]);
							}else{
								attributeValue[i] = XMLParser.getAttributeValue("", attributeName[i]);
							}
						}
						break;
					case XmlPullParser.END_TAG:
						tagName = XMLParser.getName();
						if(flag) serializer.startTag("",tagName);
						// 单节点完成,可往集合里边添加新的数据
						break;
					case XmlPullParser.END_DOCUMENT:
						if(flag) serializer.endDocument();
						break;
					}
					eventType = XMLParser.next();
				}
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			} catch (IOException ee) {
				ee.printStackTrace();}
			catch (Exception e) {
					throw new RuntimeException(e);
			}
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值