登录  /  注册
首页 > Java > java教程 > 正文

读取XML文件

巴扎黑
发布: 2017-06-23 15:54:24
原创
1223人浏览过

   java操作xml文档主要有四种方式,分别是dom、sax、jdom和dom4j,dom和sax是官方提供的,而jdom和dom4j则是引用第三方库的,其中用的最多的是dom4j方式。运行效率和内存使用方面最优的是sax,但是由于sax是基于事件的方式,所以sax无法在编写xml的过程中对已编写内容进行修改,但对于不用进行频繁修改的需求,还是应该选择使用sax。

   下面基于这四种方式来读取XML文件。
 
   第一,以DOM的方式实现。
 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();18         try{19             DocumentBuilder db = dbf.newDocumentBuilder();20             Document document = db.parse("src/xmls/DOM.xml");21             NodeList booklist = document.getElementsByTagName("book");22             for(int i = 0; i 
登录后复制
View Code

 

    第二,以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();10         try{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 }
登录后复制
View Code
 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     @Override10     public void startDocument() throws SAXException {11         super.startDocument();12         System.out.println("SAX解析开始");13     }14     @Override15     public void endDocument() throws SAXException {16         super.endDocument();17         System.out.println("SAX解析结束");18     }19     @Override20     public void startElement(String s, String s1, String s2, Attributes attributes) throws SAXException {21         super.startElement(s, s1, s2, attributes);22         System.out.println(s2);23         for(int i = 0; i 
登录后复制
View Code

 

    第三,以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.*; 9 import java.util.List;10 /**11  * Created by lenovo on 2017-6-2.12  */13 public class JDOMTest {14     public static void main(String[] args){15         SAXBuilder saxBuilder = new SAXBuilder();16         InputStream in;17         try{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();22             for(Element book: bookList){23                 System.out.println("第" + (bookList.indexOf(book)+1) + "本书!");24                 List<attribute> attrs = book.getAttributes();25                 for(Attribute attr: attrs){26                     System.out.println(attr.getName() + "=" + attr.getValue());27                 }28                 for(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 }</attribute></element>
登录后复制
View Code

 

    第四,以DOM4J的方式实现。

 1 package xmls; 2 import org.dom4j.*; 3 import org.dom4j.io.OutputFormat; 4 import org.dom4j.io.SAXReader; 5 import org.dom4j.io.XMLWriter; 6 import java.io.File; 7 import java.io.FileOutputStream; 8 import java.io.IOException; 9 import java.util.Iterator;10 import java.util.List;11 /**12  * Created by lenovo on 2017-6-2.13  */14 public class DOM4JTest {15     public void parseXML(){16         SAXReader saxReader = new SAXReader();17         try{18             Document document = saxReader.read(new File("src\\xmls\\book.xml"));19             Element rootElement = document.getRootElement();20             Iterator it = rootElement.elementIterator();21             while (it.hasNext()){22                 Element book = (Element)it.next();23                 List<attribute> attrs = book.attributes();24                 for(Attribute attr: attrs){25                     System.out.println("属性名:" + attr.getName() + "---- 属性值:" + attr.getValue() );26                 }27                 Iterator cit = book.elementIterator();28                 while (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     }37     public static void main(String[] args){38         DOM4JTest dom4JTest = new DOM4JTest();39         dom4JTest.parseXML();40     }41 }</attribute>
登录后复制
View Code

 

 

以上就是读取XML文件的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号