关于XML与XML解析(一)

XML语言

  XML语言:可扩展标记语言(HTML 超文本标记语言)

  XML与HTML的差异主要在于其标记完全是自定义的,我们只需要遵循一定的语法结构即可。

  其主要作用是:存储配置信息和传输数据(用于数据交换)

  特点:

1.xml文件后缀名:.xml(可使用浏览器浏览)

2.xml文档结构:序言(<?xml version="1.0" encoding="字符集">) + 数据部分

3.xml节点:分双标记和单标记(开始标记--结束标记),根标记只能有一对,开始标记可包含属性-->属性名="属性值"(同一标记属性名不可重复)

4.xml的名字不能有空格,不能以数字、_、Xml、XML、xml开头

5.不要再标记内写:<>&...

解析方式:有SAX、DOM、DOM4J、JDOM、PULL等等,其中功能最强大的是DOM4J,开发安卓推荐使用PULL

------------PULL解析xml
PULL是一个基于事件解析xml的类和接口的组件api

使用JavaBean将获取的数据打包成对象使用
JavaBean就是用来打包程序之间数据的组件
【解析XML文件-JavaBean】
//第一步:获取一个PULL解析工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//第二步:通过PULL解析工厂,获取PULL解析器对象
XmlPullParser parser=factory.newPullParser();
//第三步:给PULL解析器设置解析源
parser.setInput(new FileInputStream("file/book.xml"), "utf-8");

//第四步:事件解析
int parser.next();//指针下移,返回事件
int parser.getEventType();//获取当前事件
String parser.getName();//获取当前元素/节点/标记的名字
String parser.getAttributeName(int index);//获取元素指定下标的属性名
String parser.getAttributeValue(int index);//获取元素指定下标的属性值
String parser.getText();//获取文本字符串

指针所在事件:(返回的事件状态-字段-下标序号)
XmlPullParser.START_DOCUMENT 0 开始读取文档
XmlPullParser.END_DOCUMENT 1 结束读取文档
XmlPullParser.START_TAG 2 开始读取元素(指针指向起始标记)
XmlPullParser.END_TAG 3 结束读取元素(指针指向结束标记)
XmlPullParser.TEXT 4 开始读取文本(节点间的文本)


【解析XML字符串-JavaBean】
同上-区别:设置解析源(由字节输入节点流-->字符串输入流,直接读取String字符串)
String xml="<books><book id='1'><bookName>西游记</bookName><bookWriter>吴承恩</bookWriter></book></books>";
parser.setInput(new StringReader(String xml));

【生成XML文档】
//第一步:获取一个PULL解析工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
//第二步:通过PULL解析工厂,获取PULL序列化对象,将字符串序列化为xml格式
XmlSerializer ser=factory.newSerializer();
//第三步:给PULL序列化对象设置输出源
ser.setOutput(new FileOutputStream("file/book.xml"), "utf-8");//文件不存在自动创建

事件写入方法:(怎么读的,就怎么写进去)
jx.startDocument("utf-8", true);//表示xml文档的开始
jx.startTag(null, "books");//根节点的开始
jx.startTag(null, "book");//书籍节点的开始
jx.attribute(null, "id", "1");
jx.startTag(null, "bookName");
jx.text("西游记");
jx.endTag(null, "bookName");
jx.startTag(null, "bookWriter");
jx.text("吴承恩");
jx.endTag(null, "bookWriter");
jx.startTag(null, "bookContent");
jx.text("唐僧耍猴");
jx.endTag(null, "bookContent");
jx.endTag(null, "book");//书籍节点的结束
jx.endTag(null, "books");//根节点的结束
jx.endDocument();//表示xml文档的结束

posted @ 2016-06-03 21:15  倦刻懒骨  阅读(258)  评论(0编辑  收藏  举报