读取XML文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了读取XML文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6028字,纯文字阅读大概需要9分钟。
内容图文
JAVA操作XML文档主要有四种方式,分别是DOM、SAX、JDOM和DOM4J,DOM和SAX是官方提供的,而JDOM和DOM4J则是引用第三方库的,其中用的最多的是DOM4J方式。运行效率和内存使用方面最优的是SAX,但是由于SAX是基于事件的方式,所以SAX无法在编写XML的过程中对已编写内容进行修改,但对于不用进行频繁修改的需求,还是应该选择使用SAX。
1 package xmls; 2 import org.w3c.dom.Document; 3 import org.w3c.dom.Element; 4 import org.w3c.dom.Node; 5 import org.w3c.dom.NodeList; 6 import org.xml.sax.SAXException; 7 import javax.xml.parsers.DocumentBuilder; 8 import javax.xml.parsers.DocumentBuilderFactory; 9 import javax.xml.parsers.ParserConfigurationException; 10 import java.io.File; 11 import java.io.IOException; 12 /** 13 * Created by lenovo on 2017-6-3. 14 */ 15 public class DOMReadDemo { 16 public static void main(String[] args){ 17 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 18try{ 19 DocumentBuilder db = dbf.newDocumentBuilder(); 20 Document document = db.parse("src/xmls/DOM.xml"); 21 NodeList booklist = document.getElementsByTagName("book"); 22for(int i = 0; i < booklist.getLength(); i++){ 23 System.out.println("--------第" + (i+1) + "本书----------"); 24 Element ele = (Element) booklist.item(i); 25 NodeList childNodes= ele.getChildNodes(); 26for(int j = 0; j < childNodes.getLength(); j++){ 27 Node n = childNodes.item(j); 28if(n.getNodeName() != "#text"){ 29 System.out.println(n.getNodeName() + ":" + n.getTextContent()); 30 } 31 } 32 System.out.println("---------------------------------"); 33 } 34 }catch (ParserConfigurationException e){ 35 e.printStackTrace(); 36 }catch (IOException e){ 37 e.printStackTrace(); 38 }catch (SAXException e){ 39 e.printStackTrace(); 40 } 41 } 42 }
第二,以SAX的方式实现。
1 package xmls; 2 import javax.xml.parsers.SAXParser; 3 import javax.xml.parsers.SAXParserFactory; 4 /** 5 * Created by lenovo on 2017-6-1. 6 */ 7 public class xmlTest2 { 8 public static void main(String[] args){ 9 SAXParserFactory spf = SAXParserFactory.newInstance(); 10try{ 11 SAXParser sp = spf.newSAXParser(); 12 SAXParserHandler handler = new SAXParserHandler(); 13 sp.parse("src\\xmls\\book.xml", handler); 14 }catch (Exception e){ 15 e.printStackTrace(); 16 } 17 } 18 }
1 package xmls; 2 import org.xml.sax.Attributes; 3 import org.xml.sax.SAXException; 4 import org.xml.sax.helpers.DefaultHandler; 5 /** 6 * Created by lenovo on 2017-6-1. 7 */ 8 public class SAXParserHandler extends DefaultHandler { 9 @Override 10publicvoid startDocument() throws SAXException { 11super.startDocument(); 12 System.out.println("SAX解析开始"); 13 } 14 @Override 15publicvoid endDocument() throws SAXException { 16super.endDocument(); 17 System.out.println("SAX解析结束"); 18 } 19 @Override 20publicvoid startElement(String s, String s1, String s2, Attributes attributes) throws SAXException { 21super.startElement(s, s1, s2, attributes); 22 System.out.println(s2); 23for(int i = 0; i < attributes.getLength(); i++){ 24 String name = attributes.getQName(i); 25 String value = attributes.getValue(name); 26 System.out.println("属性值:" + name + "=" + value); 27 } 28 } 29 @Override 30publicvoid endElement(String s, String s1, String s2) throws SAXException { 31super.endElement(s, s1, s2); 32if(s2.equals("book")){ 33 System.out.println("-----------------------"); 34 } 35 } 36 @Override 37publicvoid characters(char[] ch, int start, int length) throws SAXException { 38super.characters(ch, start, length); 39 String value = new String(ch, start, length); 40if(value.trim().equals("")){ 41return; 42 } 43 System.out.println(value); 44 } 45 }
第三,以JDOM的方式实现。
1 package xmls; 2 import org.jdom2.Attribute; 3 import org.jdom2.Document; 4 import org.jdom2.Element; 5 import org.jdom2.JDOMException; 6 import org.jdom2.input.JDOMParseException; 7 import org.jdom2.input.SAXBuilder; 8 import java.io.*; 9import java.util.List; 10/**11 * Created by lenovo on 2017-6-2. 12*/13publicclass JDOMTest { 14publicstaticvoid main(String[] args){ 15 SAXBuilder saxBuilder = new SAXBuilder(); 16 InputStream in; 17try{ 18 in = new FileInputStream(new File("src\\xmls\\book.xml")); 19 Document document = saxBuilder.build(in); 20 Element rootElement = document.getRootElement(); 21 List<Element> bookList = rootElement.getChildren(); 22for(Element book: bookList){ 23 System.out.println("第" + (bookList.indexOf(book)+1) + "本书!"); 24 List<Attribute> attrs = book.getAttributes(); 25for(Attribute attr: attrs){ 26 System.out.println(attr.getName() + "=" + attr.getValue()); 27 } 28for(Element item: book.getChildren()){ 29 System.out.println(item.getName() + ":" + item.getValue()); 30 } 31 System.out.println("------------------------------------"); 32 } 33 }catch (FileNotFoundException e){ 34 e.printStackTrace(); 35 }catch (JDOMException e){ 36 e.printStackTrace(); 37 }catch (IOException e){ 38 e.printStackTrace(); 39 } 40 } 41 }
第四,以DOM4J的方式实现。
1 package xmls; 2 import org.dom4j.*; 3import org.dom4j.io.OutputFormat; 4import org.dom4j.io.SAXReader; 5import org.dom4j.io.XMLWriter; 6import java.io.File; 7import java.io.FileOutputStream; 8import java.io.IOException; 9import java.util.Iterator; 10import java.util.List; 11/**12 * Created by lenovo on 2017-6-2. 13*/14publicclass DOM4JTest { 15publicvoid parseXML(){ 16 SAXReader saxReader = new SAXReader(); 17try{ 18 Document document = saxReader.read(new File("src\\xmls\\book.xml")); 19 Element rootElement = document.getRootElement(); 20 Iterator it = rootElement.elementIterator(); 21while (it.hasNext()){ 22 Element book = (Element)it.next(); 23 List<Attribute> attrs = book.attributes(); 24for(Attribute attr: attrs){ 25 System.out.println("属性名:" + attr.getName() + "---- 属性值:" + attr.getValue() ); 26 } 27 Iterator cit = book.elementIterator(); 28while (cit.hasNext()){ 29 Element child = (Element) cit.next(); 30 System.out.println("子节点:" + child.getName()); 31 } 32 } 33 }catch (DocumentException e){ 34 e.printStackTrace(); 35 } 36 } 37publicstaticvoid main(String[] args){ 38 DOM4JTest dom4JTest = new DOM4JTest(); 39 dom4JTest.parseXML(); 40 } 41 }
原文:http://www.cnblogs.com/muyunren/p/6937652.html
内容总结
以上是互联网集市为您收集整理的读取XML文件全部内容,希望文章能够帮你解决读取XML文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。