java读取XML文件的四种方法总结(必看篇)
JAVA操作XML文档主要有四种方式,分别是DOM、SAX、JDOM和DOM4J,DOM和SAX是官方提供的,而JDOM和DOM4J则是引用第三方库的,其中用的最多的是DOM4J方式。运行效率和内存使用方面最优的是SAX,但是由于SAX是基于事件的方式,所以SAX无法在编写XML的过程中对已编写内容进行修改,但对于不用进行频繁修改的需求,还是应该选择使用SAX。
下面基于这四种方式来读取XML文件。
第一,以DOM的方式实现。
packagexmls;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
importorg.xml.sax.SAXException;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importjava.io.File;
importjava.io.IOException;
/**
*Createdbylenovoon2017-6-3.
*/
publicclassDOMReadDemo{
publicstaticvoidmain(String[]args){
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
try{
DocumentBuilderdb=dbf.newDocumentBuilder();
Documentdocument=db.parse("src/xmls/DOM.xml");
NodeListbooklist=document.getElementsByTagName("book");
for(inti=0;i
第二,以SAX的方式实现。
packagexmls;
importjavax.xml.parsers.SAXParser;
importjavax.xml.parsers.SAXParserFactory;
/**
*Createdbylenovoon2017-6-1.
*/
publicclassxmlTest2{
publicstaticvoidmain(String[]args){
SAXParserFactoryspf=SAXParserFactory.newInstance();
try{
SAXParsersp=spf.newSAXParser();
SAXParserHandlerhandler=newSAXParserHandler();
sp.parse("src\\xmls\\book.xml",handler);
}catch(Exceptione){
e.printStackTrace();
}
}
}
packagexmls;
importorg.xml.sax.Attributes;
importorg.xml.sax.SAXException;
importorg.xml.sax.helpers.DefaultHandler;
/**
*Createdbylenovoon2017-6-1.
*/
publicclassSAXParserHandlerextendsDefaultHandler{
@Override
publicvoidstartDocument()throwsSAXException{
super.startDocument();
System.out.println("SAX解析开始");
}
@Override
publicvoidendDocument()throwsSAXException{
super.endDocument();
System.out.println("SAX解析结束");
}
@Override
publicvoidstartElement(Strings,Strings1,Strings2,Attributesattributes)throwsSAXException{
super.startElement(s,s1,s2,attributes);
System.out.println(s2);
for(inti=0;i
第三,以JDOM的方式实现。
packagexmls;
importorg.jdom2.Attribute;
importorg.jdom2.Document;
importorg.jdom2.Element;
importorg.jdom2.JDOMException;
importorg.jdom2.input.JDOMParseException;
importorg.jdom2.input.SAXBuilder;
importjava.io.*;
importjava.util.List;
/**
*Createdbylenovoon2017-6-2.
*/
publicclassJDOMTest{
publicstaticvoidmain(String[]args){
SAXBuildersaxBuilder=newSAXBuilder();
InputStreamin;
try{
in=newFileInputStream(newFile("src\\xmls\\book.xml"));
Documentdocument=saxBuilder.build(in);
ElementrootElement=document.getRootElement();
ListbookList=rootElement.getChildren();
for(Elementbook:bookList){
System.out.println("第"+(bookList.indexOf(book)+1)+"本书!");
Listattrs=book.getAttributes();
for(Attributeattr:attrs){
System.out.println(attr.getName()+"="+attr.getValue());
}
for(Elementitem:book.getChildren()){
System.out.println(item.getName()+":"+item.getValue());
}
System.out.println("------------------------------------");
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(JDOMExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
第四,以DOM4J的方式实现。
packagexmls;
importorg.dom4j.*;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.util.Iterator;
importjava.util.List;
/**
*Createdbylenovoon2017-6-2.
*/
publicclassDOM4JTest{
publicvoidparseXML(){
SAXReadersaxReader=newSAXReader();
try{
Documentdocument=saxReader.read(newFile("src\\xmls\\book.xml"));
ElementrootElement=document.getRootElement();
Iteratorit=rootElement.elementIterator();
while(it.hasNext()){
Elementbook=(Element)it.next();
Listattrs=book.attributes();
for(Attributeattr:attrs){
System.out.println("属性名:"+attr.getName()+"----属性值:"+attr.getValue());
}
Iteratorcit=book.elementIterator();
while(cit.hasNext()){
Elementchild=(Element)cit.next();
System.out.println("子节点:"+child.getName());
}
}
}catch(DocumentExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
DOM4JTestdom4JTest=newDOM4JTest();
dom4JTest.parseXML();
}
}
以上这篇java读取XML文件的四种方法总结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。