解析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;
	}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XML即可扩展标记语言(Extensible Markup Language)是一种用于存储和传输数据的通用标记语言。在使用XML进行读写操作时,可以通过封装解析XML来实现。 首先,我们可以使用编程语言中的XML库来读取XML文件。这些库通常提供了一组函数或方法,用于加载XML文件并将其解析为可供我们使用的数据结构。这样,我们就可以通过访问和操作数据结构来获取XML文件中的信息。例如,我们可以使用库提供的函数来获取指定标签的值,或者遍历整个XML文档以获取所需的数据。 另外,我们也可以使用XML库来创建XML文件。通过使用库提供的函数或方法,我们可以定义XML文档的结构和内容,并将其保存为一个新的XML文件。我们可以按照XML的语法规则创建标签、属性和文本,并根据需要进行嵌套。这样,我们就可以按照自己的需求创建一个具有特定结构和内容的XML文件。 在封装XML的过程中,我们可以根据实际需求将读写操作封装为函数或方法。这样,我们可以将读取XML文件的过程封装为一个函数,以便在需要时调用,并返回所需的数据。同样地,我们也可以将创建XML文件的过程封装为一个函数,以便在需要时调用并生成所需的XML文件。 通过封装XML读写操作,我们可以提高代码的可重用性和可维护性。我们可以在多个项目中使用相同的封装函数,而不必重复编写相同的代码。同时,如果需要对读写操作进行优化或修改,也可以集中在封装函数中进行,而不必修改所有使用XML读写的代码。 总而言之,通过封装XML读写操作,我们可以方便地读取和创建XML文件,并能够更加高效地处理和管理XML数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值