SAX解析XML(源代码)
package book.xml;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
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;
public class SaxXML {
public static List readXML(String fileName)throws Exception{
SAXParserFactory spf=SAXParserFactory.newInstance();//创建SAX解析器工厂对象
SAXParser saxParser=spf.newSAXParser();//使用解析器工厂创建解析器实例
//创建SAX解析器要使用的事件监听器对象
StudentSAXHandler handler=new StudentSAXHandler();
saxParser.parse(new File(fileName),handler);//开始解析文件
return handler.getResult();//获取结果
}
public static void main(String[] args) {
String filename="student.xml";
List studentBeans=null;
try{
studentBeans=SaxXML.readXML(filename);
}catch(Exception e){
System.err.println(e.getMessage());
}
if(studentBeans!=null){
System.out.println("解析student.xml文档得到的学生信息:");
for(int i=0;i<studentBeans.size();i++){
System.out.println(studentBeans.get(i).toString());
}
}
}
/**
* SAX的事件监听器,当处理特定的XML文件的时候,就需要为
* 其创建一个继承DefaultHandler的类来处理特定的事件
* 可以说,这实际上就是SAX处理XML文件的核心
* @author wuhailin
*
*/
static class StudentSAXHandler extends DefaultHandler{
//保存已经读到过但还没有关闭的标签
Stack tagsStack=new Stack();
List studentBeans=new ArrayList();
StudentBean bean=null;
/**当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作*/
public void startDocument()throws SAXException{
System.out.println("--------Parse begin---------");
}
相关文档:
2)如何创建一个xml文档
由于xml实质也只是一个文本文件,所以最简单你可以直接使用System.IO下的类生成一个文件,并存储成xml文件,当然,你需要手动保证该文件形式良好,比如必须有根元素、必须有关闭标签、必须正确嵌套等等。
如果你懒得自己去想文件的形式,可以使用System.Xml下的类。
Code
Xml ......
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
SAXReader reader = new SAXReader();
try {
Document doc = reader.read("ParserSQL.xml");
&n ......
1、安装DOM4j
http://www.dom4j.org/
2、安装jaxen
http://jaxen.org/releases.html
3、代码
package extract;
import java.io.*;
import org.dom4j.*;
import org.dom4j.io.*;
import java.util.*;
public class XmlExtract {
private SAXReader reader;
private Docum ......
Caused by: java.sql.SQLException: ORA-00918: column ambiguously defined
Caused by: com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/ibatis/jpetstore/persistence/sqlmapdao/sql/Item.xml.
--- The error occurred while applying a parameter map.&nbs ......
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式,标题都写的这么阔气:Powerful Navigation with XPath,呵呵。
方法是使用Document的selectNodes(String XPath)方法,代码写法:
List l = doc.selectNodes("//COLS/COL1");
执行时却抛出以下异常:
Exc ......