java中使用j2SE自带的SAX解析XML文件
来源:互联网 发布:手机gps虚拟定位软件 编辑:程序博客网 时间:2024/06/03 10:01
java中的SAX解析XML文件的具体步骤基本分为五部:
1.获取解析器factory
2.通过factory获取sax解析器3.获取读取器
4.注册事件处理器
5.解析xml文件
具体代码如下:
public void saxDomXml() throws ParserConfigurationException,SAXException,IOException{//1.获取解析器factorySAXParserFactory factory=SAXParserFactory.newInstance();//2.通过factory获取sax解析器SAXParser sp=factory.newSAXParser();//3.获取读取器XMLReader xmlReader=sp.getXMLReader();//4.注册事件处理器//xmlReader.setContentHandler(new MyContentHandler());//xmlReader.setContentHandler(new MyContentHandler2());//5.解析xml文件xmlReader.parse("../MyXml.xml");}
下面这个类实现了ContentHandler这个接口,该接口默认的方法太多,一般的解析用不到,而且一旦调用了该接口里面的方法会全部实现,过于冗余繁琐。这个类实现的功能就是将一个XML文件完整的解析出来
//快捷键 Alt shift S 调出实现类的方法class MyContentHandler implements ContentHandler{/** * ch 数组为整个xml文件的内容 * start 当前标签提从哪个标签开始 * length 标签体长度 * */public void characters(char[] ch, int start, int length)throws SAXException {// 打印从ch数组里的start位置上取length个长度System.out.println("----打印标签内容---"+new String(ch,start,length));}public void startDocument() throws SAXException {// TODO Auto-generated method stubSystem.out.println("解析开始");}public void endDocument() throws SAXException {// TODO Auto-generated method stubSystem.out.println("解析结束");}public void startElement(String uri, String localName, String name,Attributes arg3) throws SAXException {// TODO Auto-generated method stubSystem.out.println("开始标签"+name);}/** * name 传入的标签名 * * **/public void endElement(String uri, String localName, String name)throws SAXException {// TODO Auto-generated method stub}public void setDocumentLocator(Locator arg0) {// TODO Auto-generated method stub}public void skippedEntity(String arg0) throws SAXException {// TODO Auto-generated method stub}public void startPrefixMapping(String arg0, String arg1)throws SAXException {// TODO Auto-generated method stub}public void endPrefixMapping(String arg0) throws SAXException {// TODO Auto-generated method stub}public void ignorableWhitespace(char[] arg0, int arg1, int arg2)throws SAXException {// TODO Auto-generated method stub}public void processingInstruction(String arg0, String arg1)throws SAXException {// TODO Auto-generated method stub}}//MyContentHandler
下面这个类继承自类DefaultHandler,该类实现EntityResolver, DTDHandler, ContentHandler, ErrorHandler这几个接口,不过类中方法没有做操作,当我们需要做具体的解析要求时,比如说只解析某个特定标签,或者只解析哪一个内容这种方式就很方便。
//适配器模式/** * 自定义特定的方法,例如只需要打印某个特定的标签、或者只打印第几个标签 * */class MyContentHandler2 extends DefaultHandler{private String eleName=null;private int count=0;@Overridepublic void startElement(String uri, String localName, String name,Attributes attributes) throws SAXException {// TODO Auto-generated method stubsuper.startElement(uri, localName, name, attributes);this.eleName=name;}@Overridepublic void characters(char[] ch, int start, int length)throws SAXException {super.characters(ch, start, length);//只打印标签为书名的内容,即所有的关于标签是"书名"的内容全部打印出来if ("书名" .equals(eleName)) {System.out.println(eleName+"\t标签的内容---"+new String(ch,start,length));}//只想打印第二个标签的内容if ("书名" .equals(eleName) && ++count==2) {System.out.println(eleName+"\t标签的内容---"+new String(ch,start,length));}}@Overridepublic void endElement(String uri, String localName, String name)throws SAXException {// TODO Auto-generated method stubsuper.endElement(uri, localName, name);eleName=null;}}//MyContentHandler2
XML文件内容如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE 书架 SYSTEM "../book.dtd"><书架><书><书名>java</书名><作者>XX</作者><售价>14</售价></书><书><书名>C++</书名><作者>SS</作者><售价>14</售价></书></书架>
.dtd文件内容
<!ELEMENT 书架 (书+)><!ELEMENT 书 (书名,作者,售价)><!ELEMENT 书名 (#PCDATA)><!ELEMENT 作者 (#PCDATA)><!ELEMENT 售价 (#PCDATA)>
阅读全文
0 0
- java中使用j2SE自带的SAX解析XML文件
- 使用Java自带SAX工具解析XML
- 使用Java自带SAX工具解析XML
- 使用Java自带SAX工具解析XML
- java中使用SAX解析器解析xml文件
- java的xml学习[使用SAX解析XML文件]
- android中使用SAX解析xml文件
- Android中使用sax解析xml文件的方法
- Java 使用SAX解析xml文件
- Java 使用SAX解析xml文件
- Java使用Sax解析xml文件
- java使用SAX接口解析xml文件
- 使用SAX解析将xml的文件内容结构保存到java对象中
- java中使用SAX解析XML
- 在java中使用sax解析xml
- Java 中使用 SAX 解析 XML 文档
- 使用SAX解析XML文件(SAX解析)
- java中使用sax解析xml的解决方法
- 系统分析与设计学习笔记(六)包图
- 版本回退
- 遍历文件夹
- 第十八周 动态规划
- IntelliJIDEA搭建使用MavenSSM框架
- java中使用j2SE自带的SAX解析XML文件
- 接触fpga
- Spring Tool Suite创建Web项目(学习Maven和Spring)
- Thinking in java-34 Exception异常处理
- Linux安装jdk
- AE10.2与C#2012开发
- STM32-PWM模式设置
- 小程序的学习(一)
- ANDROID-IPPhone