Java基础——读取xml文件内容的四种方式
来源:互联网 发布:网络舆情信息相关知识 编辑:程序博客网 时间:2024/06/06 03:31
读取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>1234564</NO>
<ADDR>北京</ADDR>
</value>
<value>
<NO>6543111</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);
}
}
- Java基础——读取xml文件内容的四种方式
- java读取XML文件的四种方式
- java读取XML文件的四种方式及比较
- java读取XML文件的四种方式
- java读取XML文件的四种方式
- Java 读取xml文件的四种方式
- Java读取xml的四种方式
- Java读取xml的四种方式
- 使用dom4j读取xml文件的四种方式
- python基础练习(四)—— 读取文件内容
- Java读取XML文件的内容
- java读取XML文件内容的方法
- Java读取文件内容的几种方式集合
- Java读取文件内容的几种方式总结
- Java读取文件内容的几种方式
- Java读取文件内容的几种方式集合
- Java读取文件内容的几种方式
- Java读取文件内容的三种方式
- 本文出自沉默王二的博客,转载必须注明出处。技术交流群 120926808
- MAVEN配置文件生成到src/main/webapp/WEB-INF/classes目录下面
- jconsole连接远程resin应用
- Elasticsearch5.2.2 安装教程
- HDU 6085 Multi-University Training Contest
- Java基础——读取xml文件内容的四种方式
- hdu 2462 The Luckiest number
- 微信公众号
- Windows10+Theano+CUDA8.0+Keras配置安装过程
- codeforces [Gym-100814K]
- 为什么main方法中会有形参——String[] args?
- HDU 6092 Rikka with Subset(背包+思维)
- appium+python自动化测试模板
- 地图小部件—ArcGIS API for JavaScript