1、 dom只能读小一点的数据,大数据会占用内存。Sax用于读取大文件。Sax被包含在jdk中,可在jdk的文档中找到相应的说明都可以用来读取xml文件。
2、xml文件使用 在文件中这些标签随便写都可以,建好后就可以建立一个单独的类来读取,用的方法是dom4j和w3c方法;hibernate也是用dom4j来读去配置的文件;
3、Dom采用树型结构读取xml文件,而sax采用的是事件模型来读取xml文件使用dom4j读取文件时要将相关的jar包复制到web——INF/lib中。 dom4j-1.6.1.jar; jaxen-1.1.beta-6.jar 读取xml文件的时候要注意将File文件的地址打“/“才对; 将xml文件导入数据库中的表的时候,将其每个字段最好设为String类型的,然后将每个字段所对应的标签在数据表中设一个字段后来出现了jdom它是专门为读取Java文档的,使用的是具体的类而不使用接口,dom4j使用:使用了公共类和接口,大量使用了api中的connection类。SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
4、四种xml操作方式的基本使用方法xml文件: <?xml version="1.0" encoding="utf-8" ?> <Result> <VALUE> <NO DATE="2005">A1</NO> <ADDR>GZ</ADDR> </VALUE> <VALUE> <NO DATE="2004">A2</NO> <ADDR>XG</ADDR> </VALUE> </Result>1)DOM读取import java.io.*; import java.util.*; import org.w3c.dom.*; import javax.xml.parsers.*; public class MyXMLReader{ public static void main(String arge[]){ long lasting =System.currentTimeMillis(); try{ File f=new File("data_10k.xml"); DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc = builder.parse(f); NodeList nl = doc.getElementsByTagName("VALUE"); for (int i=0;i<nl.getLength();i++){ System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); } }catch(Exception e){ e.printStackTrace(); }2)SAX读取import org.xml.sax.*; import org.xml.sax.helpers.*; import javax.xml.parsers.*; public class MyXMLReader extends DefaultHandler { java.util.Stack tags = new java.util.Stack(); public MyXMLReader() { super(); } public static void main(String args[]) { long lasting = System.currentTimeMillis(); try { SAXParserFactory sf = SAXParserFactory.newInstance(); SAXParser sp = sf.newSAXParser(); MyXMLReader reader = new MyXMLReader(); sp.parse(new InputSource("data_10k.xml"), reader); } catch (Exception e) { e.printStackTrace(); } System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");} public void characters(char ch[], int start, int length) throws SAXException { String tag = (String) tags.peek(); if (tag.equals("NO")) { System.out.print("车牌号码:" + new String(ch, start, length)); } if (tag.equals("ADDR")) { System.out.println("地址:" + new String(ch, start, length)); } } public void startElement(String uri,String localName,String qName,Attributes attrs) { tags.push(qName);} }3) JDOMimport java.io.*; import java.util.*; import org.jdom.*; import org.jdom.input.*; public class MyXMLReader { public static void main(String arge[]) { long lasting = System.currentTimeMillis(); try { SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new File("data_10k.xml")); Element foo = doc.getRootElement(); List allChildren = foo.getChildren(); for(int i=0;i<allChildren.size();i++) { System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText()); System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); } } catch (Exception e) { e.printStackTrace(); } }4)DOM4Jimport java.io.*; import java.util.*; import org.dom4j.*; import org.dom4j.io.*; public class MyXMLReader { public static void main(String arge[]) { long lasting = System.currentTimeMillis(); try { File f = new File("data_10k.xml"); SAXReader reader = new SAXReader(); Document doc = reader.read(f); Element root = doc.getRootElement(); Element foo; for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) { foo = (Element) i.next(); System.out.print("车牌号码:" + foo.elementText("NO")); System.out.println("车主地址:" + foo.elementText("ADDR")); } } catch (Exception e) { e.printStackTrace(); } }