解析XML和封装XML的基本用法和操作

<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<persons>
    <person>
        <name sex="男">徐志摩</name>
        <address>法国剑桥大学</address>
        <phone>苹果手机</phone>
        <hoppy>游泳</hoppy>
    </person>
    <person>
        <name sex="女">张幼仪</name>
        <address>北京大学</address>
        <phone>苹果手机</phone>
        <hoppy>跑步</hoppy>
    </person>
    <person>
        <name sex="女">徐家辉</name>
        <address>北京八维</address>
        <phone>oppoR11</phone>
        <hoppy>玩</hoppy>
    </person>
</persons>

解析XML方法的小工具

private List<PersonBean> pullAnaly(InputStream in) {
		List<PersonBean> list = null;
		PersonBean personBean = null;
		try {
			// 创建pull解析方式
			XmlPullParser pullParser = XmlPullParserFactory.newInstance()
					.newPullParser();
			// 设置xml的流和编码格式
			pullParser.setInput(in, "UTF-8");
			// 获取当前的状态
			int type = pullParser.getEventType();
			while (type != XmlPullParser.END_DOCUMENT) {
				// 获取当前的标签名称
				String TypeName = pullParser.getName();
				// 根据当前的状态进行判断
				switch (type) {
				// 开始标签
				case XmlPullParser.START_TAG:
					if (TypeName.equals("persons")) {
						list = new ArrayList<PersonBean>();
					} else if (TypeName.equals("person")) {
						personBean = new PersonBean();
					} else if (TypeName.equals("name")) {
						personBean.name = pullParser.nextText();
						//获取属性的内容
						personBean.sex = pullParser.getAttributeValue(null,"sex");
					} else if (TypeName.equals("address")) {
						//获取下一个内容存入javabean中
						personBean.address = pullParser.nextText();
					} else if (TypeName.equals("hoppy")) {
						personBean.hoppy = pullParser.nextText();
					} else if (TypeName.equals("phone")) {
						personBean.phone = pullParser.nextText();
					}
					break;
				// 结束标签
				case XmlPullParser.END_TAG:
					if (TypeName.equals("person")) {
						list.add(personBean);
					}
					break;
				default:
					break;
				}
				type = pullParser.next();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

封装一个XML的小工具

public boolean saveXml(List<PersonBean> list) {
		Log.d("aa", list.size() + "--" + list.get(1).name);
		// 创建存储对象
		XmlSerializer xs = Xml.newSerializer();
		try {
			xs.setOutput(this.openFileOutput("person.xml", this.MODE_PRIVATE),
					"UTF-8");

			// 设置头结点
			xs.startDocument("UTF-8", true);
			// 设置根节点
			xs.startTag(null, "persons");

			// 循环添加子元素
			for (int i = 0; i < list.size(); i++) {
				// 设置子根节点
				xs.startTag(null, "person");
				// 为子根节点设置属性
				xs.attribute(null, "id", i + "");

				// 设置姓名
				xs.startTag(null, "name");
				xs.attribute(null, "sex", list.get(i).sex);
				xs.text(list.get(i).name);
				xs.endTag(null, "name");

				// 设置爱好
				xs.startTag(null, "hpbby");
				xs.text(list.get(i).hoppy);
				xs.endTag(null, "hpbby");

				// 设置住址
				xs.startTag(null, "address");
				xs.text(list.get(i).address);
				xs.endTag(null, "address");

				// 设置手机
				xs.startTag(null, "phone");
				xs.text(list.get(i).phone);
				xs.endTag(null, "phone");

				xs.endTag(null, "person");
			}
			xs.endDocument();
			xs.endTag(null, "persons");
			return true;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return false;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值