java 解析dom 树方式来解析XML文件
来源:互联网 发布:北京狮岛编程下载 编辑:程序博客网 时间:2024/05/01 07:02
原理:
将XML 文件解析成dom 树(即Document 对象),对document 对象进行操作得到各个节点的名称和节点的值。
需要的 jar 包:
xml-apis-1.4.01.jar
几个需要澄清的概念,如下图1,2,3,在代码中都有相应指定:
图 1
图 2
图 3
代码:
Book.xml 文件
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="12"> <name>thinking in java</name> <price>85.5</price> </book> <book id="15"> <name>Spring in Action</name> <price>39.0</price> </book> </books>
DomParseService 类
package domParse;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class DomParseService {public static List<Book> getBooks(InputStream inputSream) throws ParserConfigurationException, SAXException, IOException {List<Book> list = new ArrayList<Book>();DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();Document document = builder.parse(inputSream);Element element = document.getDocumentElement();NodeList bookNodelist = element.getElementsByTagName("book");//所有的book 节点 for(int i=0;i<bookNodelist.getLength();i++) {Book book = new Book();Element bookElement = (Element)bookNodelist.item(i);//这个item() 函数返回的类型DeferredElementImpl,是Element 接口的实现类,Element 实现了Node,<span style="color:#ff0000;">如图1</span>,这个函数本身返回的是Node 接口类型book.setId(Integer.parseInt(bookElement.getAttribute("id")));NodeList bookChildNodelist = bookElement.getChildNodes();for(int j = 0;j < bookChildNodelist.getLength();j++) {if(bookChildNodelist.item(j).getNodeType() == Node.ELEMENT_NODE) { //看看这里面有什么属性node(有TEXT_NODE ,即那些空白,<span style="color:#ff0000;">如图2</span>) if("name".equals(bookChildNodelist.item(j).getNodeName())) {book.setName(bookChildNodelist.item(j).getFirstChild().getNodeValue());} else if("price".equals(bookChildNodelist.item(j).getNodeName())) {book.setPrice(Float.parseFloat(bookChildNodelist.item(j).getFirstChild().getNodeValue())); //<span style="color:#ff0000;">如图3</span>}}}list.add(book);}return list;}}Book 类
package domParse;public class Book {private int id;private String name;private float price;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}}
Main 类
package domParse;import java.io.IOException;import java.util.List;import javax.xml.parsers.ParserConfigurationException;import org.xml.sax.SAXException;public class Main {public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {List<Book> bookList = DomParseService.getBooks(new Main().getClass().getClassLoader().getResourceAsStream("Book.xml"));//.getResourceAsStream("Book.xml")for(Book book : bookList) {System.out.println("this book id, name, price : " + String.valueOf(book.getId()) + book.getName() + book.getPrice());}}}
运行结果:
this book id, name, price : 12 thinking in java 85.5
this book id, name, price : 15 Spring in Action 39.0
0 0
- java 解析dom 树方式来解析XML文件
- Java之DOM方式解析XML文件
- Java 应用DOM方式解析XML文件
- Java中的xml文件dom方式解析
- java解析XML文件(DOM方式)
- DOM方式解析XML文件
- JAVA 遇上XML|通过DOM来解析XML文件
- JAVA XML 解析 DOM 方式
- java中以DOM方式来对xml文件进行解析操作
- java与xml学习[DOM方式解析XML文件]
- XML学习04-Java中DOM方式解析XML文件
- xml文件--DOM方式解析xml
- Java--Dom解析XML文件
- java DOM解析XML文件
- Java DOM解析XML文件
- JAVA解析XML文件(一)---DOM方式
- Java使用Dom方式解析xml文件Demo
- Java以DOM方式解析生成xml文件或字符串
- windows下nginx安装、配置与使用
- [android] 出现 Unable to resolve target 'android-7'的解决办法
- Problem D 2016"百度之星" - 资格赛(Astar Round1)
- AS Plugin is too old
- java mail发送邮件(单发和群发)
- java 解析dom 树方式来解析XML文件
- 第九周上机实践项目1(3):深复制体验
- C++ HASH_MAP初探
- 记录一下
- Android 小分享 按两次回退退出软件
- 第十二周项目 String类的构造
- 软件开发过程-软件过程
- 冯诺依曼体系与哈佛体系
- Android Studio 多渠道打包