Xml文件
Keys:
标签</>,<?xml version=”1.0” encoding=”UTF-8”?>
树状节点
在Java程序中如何获取xml文件的内容(解析)
解析的目的:获取节点名、节点值、属性名、属性值
解析的四种方式:DOM, SAX, DOM4J, JDOM. 前两个是sun官方
DOM解析方式(代码及注解)
package com.darron.test;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public classTest1 {
/**
* 通过DOM方式解析XML文件 author Darron date 2016.3.16
* */
public static void main(String[] args) {
// 创建一个DocumentBuilderFactory对象
DocumentBuilderFactorydbf =DocumentBuilderFactory.newInstance();
try {
// 创建一个DocumentBuilder对象
DocumentBuilderdb = dbf.newDocumentBuilder();
// DocumentBuilder.parse(“url”)加载文件指向Document (导包org.w3c.dom)
Documentdocument = db.parse(new File("books.xml"));
// 获取所有节点(返回的list)
NodeListbooklist = document.getElementsByTagName("book");
for (int i = 0; i < booklist.getLength(); i++) {
System.out.println("=====下面开始遍历第" + (i + 1) + "本书=====");
// 遍历每一个节点,通过item方法获取一个book节点,索引从0开始
Nodebook = booklist.item(i);
// 获取book节点里面的所有属性
NamedNodeMapattrs = book.getAttributes();
System.out.println("第" + (i + 1) + "本书共有" + attrs.getLength());
// 遍历book属性
for (int j = 0; j < attrs.getLength(); j++) {
// 通过item方法获取属性通过getNodeName获得名通过getNodeValue获得值
System.out.println("属性名" + attrs.item(j).getNodeName());
System.out.println("属性名" + attrs.item(j).getNodeValue());
}
System.out.println("=====结束=====\n");
}
}catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Xml文件
<?xml version="1.0"encoding="UTF-8"?>
<bookstore>
<bookid="1">
<name>三体</name>
<author>刘念慈</author>
<year>2015</year>
<price>50</price>
</book>
<bookid="2">
<name>神们自己</name>
<author>阿西莫夫</author>
<year>2016</year>
<price>10</price>
</book>
</bookstore>
备注:此外的三种方式不更多的介绍。注意getElementsByTagName("book")方法的参数需要与xml文件匹配。