SAX解析XML

SAX是非官方的一个解析XML文档的标准,是基于事件机制的处理方式。使用了观察者模式。其他的网上介绍的很多,这儿就不废话了。看代码是最好最直接的学习方式。这里给了一个解析的“hello world”程序。

package com.xml.parse;

import java.io.File;

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;


/**
* 利用SAX解析xml文件
* @author zcmer
*
*/
public class SAXParseXML {

/**
* @param args
* @throws SAXException
* @throws 
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub

//跟Dom解析xml文件一样,第一步是获得解析器工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse(new File("person.xml"), new MyHandler());
}

}

class MyHandler extends DefaultHandler{

@Override
public void endDocument() throws SAXException {

System.out.println("\nEnd Document");

}

@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
System.out.print("</"+name+">");
}

@Override
public void startDocument() throws SAXException {

System.out.println("Start Document");

}

@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {

System.out.print("<"+name);
if(attributes != null){//如果属性值不为空
//则输出属性值
for(int i=0;i<attributes.getLength();i++){
System.out.print(" "+attributes.getQName(i)
+"=\""+attributes.getValue(i)+"\"");
}
}
//继续输出文本
System.out.print(">");
}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {

String content = new String(ch,start,length);
System.out.print(content);
}
}

附加了结果和原XML文件的图片。
注意:XML文档的存放位置是在项目的根目录。

你可能感兴趣的:(xml)