XML语言api
XML语言:可扩展标记语言(HTML 超文本标记语言)浏览器
XML与HTML的差别主要在于其标记彻底是自定义的,咱们只须要遵循必定的语法结构便可。指针
其主要做用是:存储配置信息和传输数据(用于数据交换)xml
特色:对象
1.xml文件后缀名:.xml(可以使用浏览器浏览)接口
2.xml文档结构:序言(<?xml version="1.0" encoding="字符集">) + 数据部分事件
3.xml节点:分双标记和单标记(开始标记--结束标记),根标记只能有一对,开始标记可包含属性-->属性名="属性值"(同一标记属性名不可重复)utf-8
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文档的结束