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---------");
}
相关文档:
public class yzzSerialize
{
private yzzSerialize()
{ }
private static yzzCache cache = new yzzCache();
public static T GetfromXml<T>(string xmlpath, T t)
{
using (FileStream fs = new FileStream(xmlpath, FileMode.Open, FileAcces ......
/// <summary>
/// 支持XML序列化的泛型 Dictionary
/// </summary>
/// <typeparam name="TKey"></typeparam>
/// <typeparam name="TValue"></typeparam>
[XmlRoot("SerializableDictionary")]
public class SerializableDictionary<TKey, TValue& ......
DECLARE @XMLdoc XML
SET @XMLdoc =
'<Book name="SQL Server 2000 Fast Answers">
<Chapters>
<Chapter id="1" name="Installation, Upgrades">
<CreateDate>2009-12-30</CreateDate>
</Chapter>
<Chapter id="2" name="Configuring SQL Server"/>
<Chapter i ......
使用dom4j解析XML时,要快速获取某个节点的数据,使用XPath是个不错的方法,dom4j的快速手册里也建议使用这种方式,标题都写的这么阔气:Powerful Navigation with XPath,呵呵。
方法是使用Document的selectNodes(String XPath)方法,代码写法:
List l = doc.selectNodes("//COLS/COL1");
执行时却抛出以下异常:
Exc ......
LSParserFilter---载入与保存
应用org.w3c.dom 实现XML的载入与保存实例
/**
* 实现DOM3的LS(Load & Save)功能
*
* @author S.Well
* @see org.w3c.dom.DOMErrorHandler
* @see org.w3c.dom.ls.LSParserFilter
*/
public class XML_LS implements DOMErrorHandler, LSParserFilter {
private static ......