XML的四种解析器(dom_sax_jdom_dom4j)原理及性能比较[收藏]
1)DOM(JAXP Crimson解析器) 2. 比较 xml文件: Xml代码 <?xmlversion="1.0"encoding="utf-8"?> <Result> <VALUE> <NODATE="2005">A1</NO> <ADDR>GZ</ADDR> </VALUE> <VALUE> <NODATE="2004">A2</NO> <ADDR>XG</ADDR> </VALUE> </Result> 1)DOM Java代码 importjava.io.*; importjava.util.*; importorg.w3c.dom.*; importjavax.xml.parsers.*; publicclassMyXMLReader{ publicstaticvoidmain(Stringarge[]){ longlasting=System.currentTimeMillis(); try{ Filef=newFile("data_10k.xml"); DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=factory.newDocumentBuilder(); Documentdoc=builder.parse(f); NodeListnl=doc.getElementsByTagName("VALUE"); for(inti=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(Exceptione){ e.printStackTrace(); } 2)SAX Java代码 importorg.xml.sax.*; importorg.xml.sax.helpers.*; importjavax.xml.parsers.*; publicclassMyXMLReaderextendsDefaultHandler{ java.util.Stacktags=newjava.util.Stack(); publicMyXMLReader(){ super(); } publicstaticvoidmain(Stringargs[]){ longlasting=System.currentTimeMillis(); try{ SAXParserFactorysf=SAXParserFactory.newInstance(); SAXParsersp=sf.newSAXParser(); MyXMLReaderreader=newMyXMLReader(); sp.parse(newInputSource("data_10k.xml"),reader); }catch(Exceptione){ e.printStackTrace(); } System.out.println("运行时间:"+(System.currentTimeMillis()-lasting)+"毫秒");} publicvoidcharacters(charch[],intstart,intlength)throwsSAXException{ Stringtag=(String)tags.peek(); if(tag.equals("NO")){ System.out.print("车牌号码:"+newString(ch,start,length)); } if(tag.equals("ADDR")){ System.out.println("地址:"+newString(ch,length)); } } publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattrs){ tags.push(qName);} } 3) JDOM Java代码 importjava.io.*; importjava.util.*; importorg.jdom.*; importorg.jdom.input.*; publicclassMyXMLReader{ publicstaticvoidmain(Stringarge[]){ longlasting=System.currentTimeMillis(); try{ SAXBuilderbuilder=newSAXBuilder(); Documentdoc=builder.build(newFile("data_10k.xml")); Elementfoo=doc.getRootElement(); ListallChildren=foo.getChildren(); for(inti=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(Exceptione){ e.printStackTrace(); } } 4)DOM4J Java代码 importjava.io.*; importjava.util.*; importorg.dom4j.*; importorg.dom4j.io.*; publicclassMyXMLReader{ publicstaticvoidmain(Stringarge[]){ longlasting=System.currentTimeMillis(); try{ Filef=newFile("data_10k.xml"); SAXReaderreader=newSAXReader(); Documentdoc=reader.read(f); Elementroot=doc.getRootElement(); Elementfoo; for(Iteratori=root.elementIterator("VALUE");i.hasNext();){ foo=(Element)i.next(); System.out.print("车牌号码:"+foo.elementText("NO")); System.out.println("车主地址:"+foo.elementText("ADDR")); } }catch(Exceptione){ e.printStackTrace(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |