XML——读取xml文件内容的四种方式 读取xml文件内容有四种方式:分别是DOM,JDOM,SAX,DOM4J,具体是什么此处不再赘述,主要讲如何使用及该选择哪种xml解析方式。 1)DOM4J性能最好,若不考虑可移植性,最好用DOM4J;JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出,在小文件情况下,JDOM和DOM还是值得考虑的,但是DOM仍是一个非常好的选择,DOM实现广泛应用于多种编程语言,它还是许多其它与xml相关的标准的基础,因为它正式获得w3c推荐,所以在某些项目中还是会用到它,例如JavaScript中使用DOM;SAX表现较好,这要依赖于它特定的驱动方式-事件驱动,一个SAX检测即将到来的xml流,但并没有载入到内存(当然xml流被读入时,会有部分文档暂时隐藏在内存中)。 用法: xml文件: <?xml version=”1.0″ encoding=”UTF-8″?> <Result> <value> <NO></NO> <ADDR>北京</ADDR> </value> <value> <NO></NO> <ADDR>北京海淀</ADDR> </value> </Result> DOM用法: package com.test; import java.io.File; import javax.xml.parsers.*; import org.w3c.dom.Document; import org.w3c.dom.NodeList; / * DOM读取XML文件内容 * @author Administrator * */ public class DOMXml { public static void main(String[] args) { try { File f = new File(“src\com\test\MyXml.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.println(“CODE:”+doc.getElementsByTagName(“NO”).item(i).getFirstChild().getNodeValue()); System.out.println(“NAME:”+doc.getElementsByTagName(“ADDR”).item(i).getFirstChild().getNodeValue()); } } catch (Exception e) { e.printStackTrace(); } } } JDOM用法: package com.test; import java.io.File; import java.util.List; import org.jdom.*; import org.jdom.input.*; public class JDOMXml { /JDOM读取XML文件内容 * @param args */ public static void main(String[] args) { try{ SAXBuilder builder = new SAXBuilder(); Document doc = builder.build(new File(“src\com\test\MyXml.xml”)); Element foo = doc.getRootElement(); List allChilds = foo.getChildren(); for(int i=0;i<allChilds.size();i++){ System.out.println(“CODE:”+allChilds.get(i).getChild(“NO”).getText()); System.out.println(“ADDR:”+allChilds.get(i).getChild(“ADDR”).getText()); } }catch(Exception e){ e.printStackTrace(); } } } DOM4J用法: package com.test; import java.io.File; import java.util.Iterator; import org.dom4j.*; import org.dom4j.io.*; public class DOM4JXml { /DOM4J读取文件内容 * @param args */ public static void main(String[] args) { try{ File f = new File(“src\com\test\MyXml.xml”); SAXReader reader = new SAXReader(); Document doc = reader.read(f); Element root = doc.getRootElement(); Element foo; for(Iterator<E> i = root.elementIterator(“value”) ; i.hasNext();){ foo = (Element)i.next(); System.out.println(“CODE:”+foo.elementText(“NO”)); System.out.println(“NAME:”+foo.elementText(“ADDR”)); } }catch(Exception e){ e.printStackTrace(); } } } SAX用法: package com.test; import java.util.Stack; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.helpers.DefaultHandler; public class SAXXml extends DefaultHandler { / * SAX读取XML文件内容 */ Stack tags = new Stack(); public SAXXml() { super(); } public static void main(String[] args) { long lasting = System.currentTimeMillis(); try{ SAXParserFactory sf = SAXParserFactory.newInstance(); SAXParser sp = sf.newSAXParser(); SAXXml reader = new SAXXml(); sp.parse(new InputSource(“src\com\test\MyXml.xml”), reader); }catch(Exception e){ e.printStackTrace(); } System.out.println(“Time:” + (System.currentTimeMillis() – lasting) + “ms”); } public void characters(char ch[],int start,int length){ String tag = (String) tags.peek(); if(tag.equals(“NO”)){ System.out.println(“CODE:”+ new String(ch,start,length)); } if(tag.equals(“ADDR”)){ System.out.println(“NAME:” + new String(ch,start,length)); } } public void startElement(String uri,String localName,String qName,Attributes attrs){ tags.push(qName); } }
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/57700.html