JAXP
一、概述
XML分析目前已经被标准化为两个,SAX(Simple API for XML)和DOM(Document Object Model,文档对象模型)。这两个标准提供了各种API以便于开发人员处理XML数据,分别适用于不同的分析需要
为了解决这些困难,Sun Microsystem在1999年后期提出了JAXP(Java API for XML Parsing)
二、版本(最新可用的)
支持下面的特性
- JAXP 1.3
- SAX 2.0.2
- XML 1.1
- XML 1.0
- XInclude
- DOM Level 3 Core
- DOM Level 3 Load and Save
- W3C XML Schema
下载或是察看文档请参见:http://java.sun.com/xml/downloads/jaxp.html
三、JAXP概述
他提供了一种可插入式层,这就使得应用程序开发人员能够在不影响应用程序逻辑的前提下修改分析器的方案。而且他还简单易学。JAXP API 模型也非常简单,易于理解,使用起来也很简便。用于分析的类和接口都打包封装在javax.xml.parsers包中,并置于已有的SAX或者DOM API的顶部。用于转换的类和接口则包装封装在jaavax.xml.transform包中,他提供了实现XSLT转换的各种应用程序。重要的一个问题是,JAXP是随Sun的Crimson分析器一起提供的,这是分析器的引用方案,他封装与Parser.jar中。
四、用SAX处理XML
示例:
//生成处理类
package jws.sax;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class MySAXExample extends DefaultHandler {
public MySAXExample() {
// TODO Auto-generated constructor stub
}
public void startDocument()throws SAXException{
System.out.println("Start Document");
System.out.println("<?xml version=1.0 ?>");
}
public void endDocument()throws SAXException{
System.out.println("End Document");
}
public void characters(char bur[],int offset,int len)throws SAXException{
String s=new String(bur,offset,len);
System.out.println(s);
}
public void startElement(String namespaceURI,String localName,String rawName,
Attributes attrs)throws SAXException
{
System.out.println("<"+localName);
int length=attrs.getLength();
for(int i=0;i<length;i++)
{
System.out.println(" "+attrs.getLocalName(i)+"="+attrs.getValue(i));
}
System.out.println(">");
}
public void endElement(String namespaceURI,String localName,String rawName)
throws SAXException
{
System.out.println("</"+localName+">");
}
}
//测试代码
package jws.sax;
import jws.sax.MySAXExample;
import javax.xml.parsers.*;
public class test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
SAXParserFactory factory=SAXParserFactory.newInstance();
SAXParser parser=factory.newSAXParser();
parser.parse("test.xml",new MySAXExample());
}catch(FactoryConfigurationError fce)
{
System.out.println("Occurred :"+fce);
}
catch(ParserConfigurationException pce)
{
System.out.println("Occurred :"+pce);
}
catch(Exception e)
{
System.out.println("Occurred :"+e);
}
}
}