1.[文件] sax.xml ~ 185B 下载(9)
李明30
李向梅25
2.[文件] SaxXMLParser.java ~ 943B 下载(7)
package com.senvn.parser;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import com.senvn.sax.CustomSaxHandler;
public class SaxXMLParser {
public static List> readXML(InputStream input, String nodeName){
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser parser = spf.newSAXParser();
CustomSaxHandler handler = new CustomSaxHandler(nodeName);
parser.parse(input, handler);
input.close();
return handler.getList();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
3.[文件] CustomSaxHandler.java ~ 3KB 下载(7)
package com.senvn.sax;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class CustomSaxHandler extends DefaultHandler {
private HashMap map = null;
private List> list = null;
/**
* 当前正在解析的元素
*/
private String currentTag = null;
private String currentValue = null;
private String nodeName = null;
public CustomSaxHandler() {
}
public CustomSaxHandler(String nodeName) {
this.nodeName = nodeName;
}
/**
* 当读到文件的开始
*/
public void startDocument() throws SAXException {
// 初始化list
this.list = new ArrayList>();
}
/**
* 开始节点
*/
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("uri:"+uri+";localName:"+localName+";qName:"+qName+";");
if(qName.equals(nodeName)){
map = new HashMap();
}
if(attributes!=null&&map!=null){
for(int i = 0;i
map.put(attributes.getQName(i), attributes.getValue(i));
System.out.println("索引:"+i+";结点属性名称:Qname:"+attributes.getQName(i)+";结点属性值:value:"+attributes.getValue(i));
}
}
currentTag = qName;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(currentTag!=null&&map!=null){
currentValue = new String(ch, start, length);
if(currentValue != null && !currentValue.trim().equals("") && !currentValue.trim().equals("\n")){
map.put(currentTag, currentValue);
}
}
System.out.println("currentTag:"+currentTag+";currentValue:"+currentValue);
currentTag=null;
currentValue=null;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(qName.equals(nodeName)){
list.add(map);
map = null;
}
}
public HashMap getMap() {
return map;
}
public void setMap(HashMap map) {
this.map = map;
}
public List> getList() {
return list;
}
public void setList(List> list) {
this.list = list;
}
public String getCurrentTag() {
return currentTag;
}
public void setCurrentTag(String currentTag) {
this.currentTag = currentTag;
}
public String getCurrentValue() {
return currentValue;
}
public void setCurrentValue(String currentValue) {
this.currentValue = currentValue;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
}
4.[文件] SaxXmlParseTest.java ~ 692B 下载(7)
package com.senvn.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.List;
import com.senvn.parser.SaxXMLParser;
public class SaxXmlParseTest {
public static void main(String[] args) {
File file = new File("sax.xml");
try {
FileInputStream fileInputStream = new FileInputStream(file);
List> list = SaxXMLParser.readXML(fileInputStream, "person");
for(HashMap p : list){
System.out.println(p.toString());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}