JAVAWEB第六天sax方式解析xml
来源:互联网 发布:燕十八php教程2016 编辑:程序博客网 时间:2024/05/21 06:26
一、使用sax方式解析xml
–sax方式不能实现增删改操作,只能实现查询操作
打印出整个文档,执行parse方法,第一个参数是xml的路径,第二个参数是解析器。关于解析器,需要创建一个类,继承事件解析类,然后重写其中的方法。
1、现在进行打印整个文档(注意:其中输出的时候不要换行,因为解析的时候会把空格和换行一并解析出来)
java代码
package sax;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.Attributes;import org.xml.sax.SAXException;import org.xml.sax.helpers.DefaultHandler;public class Test { public static void main(String[] args) throws Exception { /** * 1.创建解析器工厂 * 2.创建解析器 * 3.执行parse方法 * 4.自己写一个类,继承解析器类,DefaultHandler * 5.重写其中的方法 */ SAXParserFactory saxParserFactory=SAXParserFactory.newInstance(); SAXParser saxParser=saxParserFactory.newSAXParser(); saxParser.parse("src/p1.xml", new myDefaultHandler()); }}class myDefaultHandler extends DefaultHandler{ @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.out.print("<"+qName+">"); } @Override public void characters(char[] ch, int start, int length) throws SAXException { System.out.print(new String(ch,start,length)); } @Override public void endElement(String uri, String localName, String qName) throws SAXException { System.out.print("</"+qName+">"); }}
xml文件
<?xml version="1.0" encoding="UTF-8"?><person> <p1> <name>zhangsan</name> <age>20</age> </p1> <p1> <name>lisi</name> <age>30</age> </p1></person>
2、查询所有的name元素值
定义一个成员变量,flag=fasle,判断开始元素是否是为name元素,如果是name元素,把false设为true,此时flag为true,在characters里面打印他的内容,当执行到结束方法时候,把flag值设为true。
class myDefault2 extends DefaultHandler{ boolean flag=false; @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { //判断qName是否为name if("name".equals(qName)) { flag=true; } } @Override //当flag为true时,表示解析到name元素,打印出name元素的值 public void characters(char[] ch, int start, int length) throws SAXException { if(flag==true) { System.out.println(new String(ch,start,length)); } } @Override //把flag设置为false,表示name结束 public void endElement(String uri, String localName, String qName) throws SAXException { if("name".equals(qName)) { flag=false; } }}
3、查询特定name元素的值
设置一个索引,通过索引来进行查询
boolean flag=false;int index=1;public void characters(char[] ch, int start, int length) throws SAXException { if(flag==true && index==1) { System.out.println(new String(ch,start,length)); } }
阅读全文
0 0
- JAVAWEB第六天sax方式解析xml
- JavaWeb - XML解析 - SAX
- javaWeb-sax解析xml文件
- SAX方式解析XML
- SAX方式解析XML
- XML解析-SAX方式
- JAVAWEB第六天dom4j解析xml
- javaweb-day02-2(XML 解析 - Jaxp的sax方式解析)
- XML解析补充---SAX方式
- android sax解析 xml方式
- SAX方式创建/解析xml
- 用sax方式解析xml
- 用SAX 方式解析 XML
- python sax方式解析xml
- SAX方式解析XML详解
- SAX方式进行XML解析
- 应用 SAX 方式解析 XML
- 应用 SAX 方式解析 XML
- python中pandas包的to_csv()报错
- WIN10系统文件加密(纯手工技巧,非代码类)
- 可能用到的第三方库
- 数据传输
- 关于mysql存储过程的definer的问题
- JAVAWEB第六天sax方式解析xml
- Android自定义未读消息提示View
- 制作unity小工具 获取FBX模型里面的AnimationClip片段
- 全网最新:Netty源码剖析&NIO+Netty5各种RPC架构实战路线
- addTextChangedListener(TextWatcher watcher)
- spring中使用@Scheduled注解时corn表达式、fixedRate、fixedDelay的区别
- UDP
- UDP网络编程
- 如果getParameter()的参数不存在 将返回什么