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)+"本书!"); List attrs=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文件的四种方法总结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。