java自带的xml解析,使用Java自带SAX工具解析XML
studentInfo.xml
崔衛兵
PC學院
62354666
男,1982年生,碩士,現就讀于北京郵電大學
cwb
PC學院
62358888
男,1987年生,碩士,現就讀于中國農業大學
xxxxx
xxx學院
66666666
注視中,注釋中
SAXHandler.java
package saxExample;
import java.util.HashMap;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
/**
* 繼承DefaultHandler類,用SAX實現對xml的遍歷
* @author cuiweibing
* @since 2007.8.8
*/
public class SAXHandler
extends DefaultHandler {
//存放所有的節點(這里的節點等于原來的節點+編號)以及它所對應的值
private HashMap hashMap = new HashMap();
//目前的節點
private String currentElement = null;
//目前節點所對應的值
private String currentValue = null;
//用于節點編號(具體到person)
private static int i=-1;
public HashMap getHashMap() {
return hashMap;
}
public void characters(char[] ch, int start, int length) throws SAXException {
//取出目前節點對應的值
currentValue = new String(ch, start, length);
}
public void startElement(String uri, String localName, String qName,
Attributes attr) throws SAXException {
if(qName.equalsIgnoreCase("student")){
//currentElement= "";
}else if (qName.equalsIgnoreCase("person")){
i++;
//currentElement= "";
String age=attr.getValue("age");
if(age!=null){
hashMap.put(qName+"-age"+i, age);
}else{
hashMap.put(qName+"-age"+i, "20");
}
}else if (qName.equalsIgnoreCase("college")){
currentElement= qName;
String leader=attr.getValue("leader");
if(leader!=null){
hashMap.put(qName+"-leader"+i, leader);
}else{
hashMap.put(qName+"-leader"+i, "leader");
}
}else{
currentElement= qName;
}
}
public void endElement(String uri, String localName, String qName) throws SAXException {
if (qName.equalsIgnoreCase("student")){
//????? hashMap.put(currentElement, currentValue);
}else if (qName.equalsIgnoreCase("person")){
}else{
currentElement+=i;
hashMap.put(currentElement, currentValue);
}
}
}TestSAXHandler.java
package saxExample;
import java.io.File;
import java.util.HashMap;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
/**
* 解析主類
* @author cuiweibing
* @since 2007.8.8
*/
public class TestSAXHandler {
public TestSAXHandler() {
}
public static void main(String[] args) {
try{
//初始化與解析
SAXHandler handler = new SAXHandler();
SAXParserFactory saxparserfactory = SAXParserFactory.newInstance();
SAXParser saxparser = saxparserfactory.newSAXParser();
saxparser.parse(new File("studentInfo.xml"), handler);
//解析完后獲取解析信息
HashMap hashMap = handler.getHashMap();
System.out.println("姓名/t年齡/t學院/t學院領導/t電話/t/t備注");
for(int i=0;i
int j=i/6;
System.out.print(hashMap.get("name"+j)+"/t");
System.out.print(hashMap.get("person-age"+j)+"/t");
System.out.print(hashMap.get("college"+j)+"/t");
System.out.print(hashMap.get("college-leader"+j)+"/t");
System.out.print(hashMap.get("telephone"+j)+"/t");
System.out.println(hashMap.get("notes"+j)+"/t");
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
總結
以上是生活随笔為你收集整理的java自带的xml解析,使用Java自带SAX工具解析XML的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 18.04及Snap体验—
- 下一篇: 苹果手机有门禁卡功能吗