在使用Java解析XML文档之前,我们先来了解了解什么是XML。
XML即可扩展的标记语言,可以定义语义标记(标签),是元标记语言。XML不像超文本标记语言HTML,HTML只能使用规定的标记,对于XML,用户可以定义自己需要的标记。XML(eXtensible Markup Language)和HTML(Hyper Text Markup Language)师出同门,都是从SGML(Standard Generalized Markup Language)延伸而出的标记语言。
一、解析数据之前,先创建一个XML文档
<?xml version="1.0" encoding="UTF-8"?> <books> <book isbn="223"> <title>三体</title> <author>刘慈欣</author> <price>59</price> </book> <book isbn="456"> <title>失控</title> <author>KK</author> <price>99</price> </book> <book isbn="789"> <title>冰与火</title> <author>乔治马丁</author> <price>129</price> </book> </books>可以看到,XML的编写与HTML相比,用户可以自定义标签,当然,标签的自定义也需要符合面向对象编程中的逻辑思想。
二、DOM解析原理
DOM,Document Object Model,文档对象模型。DOM是html和xml文档的编程接口规范,和平台、语言是无关的。利用dom规范,能够实现dom 文档和xml之间的相互转换,遍历、操作相应dom文档的内容。
DOM规范的核心就是树模型。
此外,JDOM是Java和DOM的结合体。JDOM 致力于建立一个完整的基于 Java 平台的、通过 Java 代码来访问、操作并输出 XML 数据。JDOM是用Java语言读、写、操作XML的新API函数。
DOM解析的原理如下图所示。
三、利用Eclipse创建一个Java项目,创建一个与XML文档相对应的类Book.java,如下:
public class Book { // 书版本号 private String isbn; // 书标题 private String title; // 书作者 private String author; // 书价格 private int price; public Book() { } /** * 构造方法 * * @param isbn * 版本号 * @param title * 标题 * @param author * 作者 * @param price * 价格 */ public Book(String isbn, String title, String author, int price) { super(); this.isbn = isbn; this.title = title; this.author = author; this.price = price; } /** * 获得书版本号 * * @return 版本号 */ public String getIsbn() { return isbn; } /** * 设置书版本号 * * @param isbn * 版本号 */ public void setIsbn(String isbn) { this.isbn = isbn; } /** * 获得书标题名字 * * @return 标题 */ public String getTitle() { return title; } /** * 设置书标题名字 * * @param title * 标题名字 */ public void setTitle(String title) { this.title = title; } /** * 获得书的作者名字 * * @return 作者名字 */ public String getAuthor() { return author; } /** * 设置书的作者名字 * * @param author * 作者名字 */ public void setAuthor(String author) { this.author = author; } /** * 获得书的价格 * * @return 价格 */ public int getPrice() { return price; } /** * 设置书的价格 * * @param price * 价格 */ public void setPrice(int price) { this.price = price; } /** * 重写Object继承下来的toString方法,用于将书的字段变成字符串对象 */ @Override public String toString() { return "Book [isbn=" + isbn + ", title=" + title + ", author=" + author + ", price=" + price + "]"; } }
四、将第一步中的book.xml放置在该项目的目录下,便于java中使用相对路径找到该文件
五、创建一个包含main(主方法)的主类,用于解析book.xml文档,为其创建一个readXML的静态方法,因为要在main方法中进行调用,具体代码如下:
public class RWTest { public static void main(String[] args) { readXML(); } private static void readXML() { // 1.获得解析器工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { // 2.通过工厂获得解析器 DocumentBuilder builder = factory.newDocumentBuilder(); // 3.指定要解析的xml文件 File file = new File("book.xml"); // 4.解析数据:file ----> doc(树形结构) Document doc = builder.parse(file); // 创建一个列表用来保存book信息 List<Book> list = new ArrayList<>(); /* * 节点 Node 1 元素节点 Element 2 属性节点 Attr 3 文本节点 Text */ // 通过标签取该xml文件中所有的Book标签,返回一个链表 NodeList nodeList = doc.getElementsByTagName("book"); // 解析每一个book元素,并将解析的数据存放到Book对象中 for (int i = 0; i < nodeList.getLength(); i++) { // 从nodeList中获得结点元素 Element eBook = (Element) nodeList.item(i); Attr aIsbn = eBook.getAttributeNode("isbn"); String isbn = aIsbn.getValue(); Element eTitle = (Element) eBook.getElementsByTagName("title").item(0); String title = eTitle.getTextContent(); String author = eBook.getElementsByTagName("author").item(0).getFirstChild().getNodeValue(); String strPrice = eBook.getElementsByTagName("price").item(0).getTextContent(); int price = Integer.parseInt(strPrice); // 将解析的数据存储到Book对象 Book book = new Book(isbn, title, author, price); // 将book对象存放到list列表中 list.add(book); // System.out.println(eTitle.getTextContent()); } // 输出list for (Book b : list) { System.out.println(b); } } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关推荐
java程序中使用dom解析xml文件介绍
java学习笔记——使用DOM解析XML和使用SAX解析XML
dom4j是sourceforge.net上的一个开源项目,主要用于对XML的解析。
010302_XML解析 —— DOM 010303_XML解析 —— SAX 010304_XML解析 —— JDOM 010305_XML解析 —— DOM4J 010306_使用JavaScript操作DOM 010401_Tomcat服务器的安装及配置 020501_注释及Scriptlet 020502_page指令 ...
xml入门小项目——通讯录系统 系统特点: 1、系统主程序入口MainProgram.java ...系统xml文档通过dom4j技术创建和解析。 3、涉及JavaSE中的集合、泛型、接口文件及其实现类的应用等。 4、涉及junit测试方法的使用
本篇文章主要介绍了Android创建与解析XML(二)——详解Dom4j方式,这里整理了详细的代码,有需要的小伙伴可以参考下。
学习xml——sax解析的项目小示例 非常简单易懂 而且包括多种sax解析的方法 如xmlReader,saxBuilder工厂,还包括一个dom解析的示例(DocumentBuilder工厂)
DOM解析 逐行扫描XML文件,读取文件的同时即可进行解析处理,不必等到文件加载结束。缺点是无法进行增、删、改等操作。 SAX解析 一个开源的Java项目,既可以用于Android应用,也可以用于JavaEE程序。Android中已经...
工具内容包括java程序开发中文件配置解析需要实用的jar包工具——[dom4j-1.6.1.jar]&[jaxen-1.1-beta-6.jar]
XML4C 和 XML4J 是两个并列的项目,而 XML4J 是 Xerces-J——Java 实现——的前身。IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),他们将其分别改名为 Xerces-C++ 和 Xerces-J。注...
操纵和解析XML 选择合适的XML生成方式 XHTML与CSS XHTML、CSS与Ajax XHTML与CSS基础 XHTML语法约束 JavaScript JavaScript与Ajax JavaScript基本数据结构 JavaScript表达式和运算符 JavaScript的流程控制和函数 ...
【第一版第四章】老罗Android开发视频--解析XML数据(3集) 【第一版第五章】老罗Android开发视频--解析JSON数据(4集) 【第一版第六章】老罗Android开发视频--服务器端JDBC编程(2集) 【第一版第七章】老罗...
19 线程——BlockingQueue 第17章 Java与XML 17. 1 用DOM处理XML文档 17. 2 用SAX处理XML文档 17. 3 用XSLT转换XML 17. 4 对象与XML的转换 第18章 Java Mail 18. 1 使用SMTP协议发送...
3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 ...
3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 ...
3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 ...
最近和朋友一起开发APP,需要大量数据,而”互联网”与”共享”融合发展的理念,遂资源的可重用给予了当代骚客文人获得感与幸福感…好了,不日白了(正宗重庆话,吹牛的意思),开始正题 BeautifulSoup4 本人是做...
3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 ...
3.2.1、DOM解析操作 3.2.2、SAX解析操作 3.2.3、XML解析的好帮手:JDOM 3.2.4、最出色的解析工具:DOM4J 3.3、使用JavaScript操作DOM 3.4、开发实战讲解(基于Oracle数据库) 第4章 Tomcat服务器的安装及配置 ...