从网上查到“SAX解析器采用了基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件”现在需要用SAX解析500M的XML,用VTD-XML解析报内存溢出。所以现在想改成SAX方式改写解析方式。最终,根据表名,将解析的内容放到不同的Excel中。现在的目的是,想了解SAX解析xml的步骤,思路。
另外,这句话比较迷惑。“SAX解析器采用了基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件”
另外,这句话比较迷惑。“SAX解析器采用了基于事件的模型,它在解析 XML 文档的时候可以触发一系列的事件”
解决方案 »
- 神奇的结果,7.7-7=???
- 用java连数据库,如何得到符合条件的查旬结果的纪录数?
- 为什么按住mouse的左键就不能触发mouseMoved事件?
- 望指点:关于package的一个基本问题
- 跨求!!!!验证码代码问题,在windows2000能显示,在linux下不能显示出来
- 一个类中的一个域(也是一个类),如何通个这个域,找到这个类?
- 为什么要写interface
- Math.rint(Math.random()*9)可以返回double类型的数,请问如何返回int类型的值。或者char类型的。谢谢。
- 一台装了jws1.0.1的机器为什么在运行applet的时候,系统提示安全错误。
- 我是java的菜鸟
- TimerTask中scheduleAtFixedRate的使用问题
- java经典算法
import java.io.IOException;
import javax.xml.parsers.*;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
*
* date 12008-12-16
* SAX解析XML文件
* 优点,简单
*
*/
public class SAXtoMyxml {
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException {
// 通过工厂获得SAX解析器
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sax = sf.newSAXParser();
//解析器
// 通过解析器解析xml文件
sax.parse("myxml1.xml", new SAXHander()); //使用自定义的监听器
}
}
// 自定义sax解析监听器
class SAXHander extends DefaultHandler {
public void startDocument() throws SAXException {
System.out.println("文档开始 ");
-------------------------------------------------------------------------------- }
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
System.out.println("元素开始 "+qName);
}
public void characters(char[] ch, int start, int length) throws SAXException {
String text = new String(ch,start,length);
//去掉xml文件中的空格节点
if(text.trim().equals("")) {
return;
}
System.out.println("文本内容 "+text);
}
public void endElement(String uri, String localName, String qName) throws SAXException {
System.out.println("元素结束 "+qName);
}
public void endDocument() throws SAXException {
System.out.println("文档结束 ");
}
}
XML文件太大的时候,只能用SAX这样的逐行处理的方法,用时间换空间了