XML的java解析- -
来源:互联网 发布:淘宝9.9限时抢购在哪里 编辑:程序博客网 时间:2024/04/30 07:28
* SAX API是基于事件的。实现了SAX API的XML解析器跟据解析到的XML文档的不同特征产生事件。通过在Java代码中捕捉这些事件,就可以写出由XML数据驱动的程序。
解析过程中需要XML解析器,Apache Xerces就是其中的一种,可以从http://xml.apache.org/dist/xerces-j/下载需要的解析器代码,解压缩程序后,将生成的xercesSamples.jar, xercesImpl.jar, xml-apis.jar,xmlParserAPIs.jar加入到系统的classpath中(或者xerces.jar,在1.4.4版本中,该jar文件相当于上述jar的集合)。
并且指定解析程序需要的编译器,有两种方式指定:
1)在主程序中,进行解析前,即 XMLReader xr = XMLReaderFactory.createXMLReader(); 添加如下代码:
System.setProperty("org.xml.sax.driver","org.apache.xerces.parsers.SAXParser");
2)使用下面的命令,进行编译执行:
java -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser Example2,Example2为主程序名称;
使用SAX API的主要任务就是创建一个实现ContentHandler接口,一个供XML 解析器调用以将分析XML文档时所发生的SAX事件分发给处理程序的回调接口。SAX API也提供了一个已经实现了ContentHandler接口的DefaultHandler适配器类。
在DefaultHandler中,提供了如下的方法进行重载:
startDocument, endDocument, startElement, endElement, characters,这几种方法;
对于如下的xml文档:
<?xml version="1.0"?>
<simple date="7/7/2000" >
<name> Bob </name>
<location> New York </location>
</simple>
进行解析的顺序如下:
Example1 SAX Events:
SAX Event: START DOCUMENT
SAX Event: START ELEMENT[ simple ]
ATTRIBUTE: date VALUE: 7/7/2000
SAX Event: CHARACTERS[ ]
SAX Event: START ELEMENT[ name ]
SAX Event: CHARACTERS[ Bob ]
SAX Event: END ELEMENT[ name ]
SAX Event: CHARACTERS[ ]
SAX Event: START ELEMENT[ location ]
SAX Event: CHARACTERS[ New York ]
SAX Event: END ELEMENT[ location ]
SAX Event: CHARACTERS[ ]
SAX Event: END ELEMENT[ simple ]
SAX Event: END DOCUMENT
即在解析的过程中,会调用我们extends DefaultHandler的方法,例如解析开始,先动用startDocument方法,然后遇到<simple>后,调用startElement等。在调用的过程中,将中间解析到的结果存放在中间变量中:
例如:
public void startElement( String namespaceURI, String localName, String name, Attributes attr ) throws SAXException {
System.out.println( "SAX Event: START ELEMENT[ " +
localName + " ]" );
//Also, let's print the attributes if
// there are any...
for ( int i = 0; i < attr.getLength(); i++ ){
System.out.println( " ATTRIBUTE: " +
attr.getLocalName(i) + " VALUE: " + attr.getValue(i) );
}
解析程序,将中间结果存放在namespaceURL,localName,name,以及Attributes attr中,用户扩展的程序中,可以将这些结果读取出来,判断是否是自己需要的,如果是那么进行处理。
因此SAX,是数据驱动的。
这是SAX的最基本的原来,还有些问题需要处理:例如,在xml中,不同位置的element元素名称相同,在SAX API中,如何处理呢,可以使用Stack将不同元素的路径保存在堆栈中,使用元素的路径名来判别不同位置的元素。或者其他的问题;
- XML的java解析- -
- JAVA的XML解析
- Java解析XML的原理图
- java中xml的解析
- java 解析xml的方式
- Java解析XML的方式
- JAVA解析XML的方式?
- Java--xml文件的解析
- Java解析XML的笔记
- java解析xml的方法
- Java解析XML的原理
- Java对XML的解析
- Java解析XML的用法
- Java解析XML的原理
- JAVA中XML的解析
- Java的Dom解析xml
- java中XML的解析
- Java---XML的解析(1)-DOM解析
- ant相关内容学习
- json基础部署
- Linq to SQL学习
- ant-build.xml说明- -
- 中国古代十大名剑之十-承影-精致优雅之剑
- XML的java解析- -
- 获取mac地址的方法
- Excel 应用07_多次格式刷应用
- Asp.net DataTable添加列和行的方法
- Mandriva 2010 的五笔输入法
- 链接数据库
- symbian开发者签名申请流程
- Service(服务)-概念的整理
- Excel 应用08_单元格修改快捷方式