java学习 (2)xml操作 STAX(增、删、改、查)
STAX 拉模式
推模式:由解析器来调用相应事件方法
拉模式:客户端程序自己控制xml事件,主动调用相关事件方法
pull采用将xml文档传递给解析器,手动通过next触发文档解析事件,在客户端代码中获取当前事件,从而调用相应事件处理方法
当使用xml pull 如果使用Android系统,系统内置无需下载任何开发包,如果javase javaee使用pull需要下载pull单独的开发工具包
1.下载开发工具包 http://www.extreme.indiana.edu/dist/java-repository/xpp3/distributions/ http://www.xmlpull.org/ 获得xpp3-1.1.3.4.C.jar
2.将开发工具包加载进java项目 将xpp3-1.1.3.4.C.jar复制粘贴至项目内,右击改文件,点击Builde Path将改资源地址导入到环境路径中
代码实现: 1.创建xml pull工厂 XmlPullParserFactory
2.利用工厂创建xml pull解析器 XmlPullParser
读
1 @Test 2 public void xmlPullDemo() throws Exception{ 3 XmlPullParserFactory parserFactory=XmlPullParserFactory.newInstance(); 4 XmlPullParser xmlPullParser=parserFactory.newPullParser(); 5 xmlPullParser.setInput(new FileInputStream("books.xml"),"utf-8"); 6 int eve; 7 while((eve=xmlPullParser.getEventType())!=XmlPullParser.END_DOCUMENT){ 8 System.out.println(xmlPullParser.getName()); //获取节点名称 9 String str=xmlPullParser.nextText();//获取文本 10 System.out.println(eve); 11 xmlPullParser.next(); 12 }
写
1 @Test 2 public void xmlSerialDemo() throws Exception{ 3 XmlPullParserFactory xmlPullParserFactory=XmlPullParserFactory.newInstance(); 4 XmlSerializer xmlSerializer=xmlPullParserFactory.newSerializer(); 5 xmlSerializer.setOutput(new FileOutputStream("book_bak.xml"),"utf-8"); 6 xmlSerializer.startDocument("utf-8", true); 7 xmlSerializer.startTag(null, "books"); 8 for(int i=0;i<3;i++){ 9 xmlSerializer.startTag(null, "book"); 10 xmlSerializer.startTag(null, "name"); 11 xmlSerializer.text("java编程高手"+i); 12 xmlSerializer.endTag(null, "name"); 13 xmlSerializer.startTag(null, "price"); 14 xmlSerializer.text(""+(i+1)*100); 15 xmlSerializer.endTag(null, "price"); 16 xmlSerializer.endTag(null, "book"); 17 } 18 xmlSerializer.endTag(null, "books"); 19 xmlSerializer.endDocument(); 20 }