1、什么是XML
主要便于跨平台之间的通信。
举个例子:
<?xml version="1.0" encoding="UTF-8"?>
<bookStroe>
<book id="1">
<name>冰与火之歌</name>
<author>乔治马丁</author>
<year>2014</year>
</book>
<book id="2">
<name>安徒生童话</name>
<language>乔治马丁</lauguage>
<year>2014</year>
</book>
</bookStroe>
2、Java读取XML
在Java程序中如何获取xml文件的内容
1,在Java程序中读取xml文件的过程也称为——解析xml文件
2,解析的目的:
获取节点名、节点值、属性名、属性值
3,解析方式:
DOM
SAX
DOM4J
JDOM
前两种为java官方的解析方式
3、用DOM解析XML
步骤1:创建DocumentBuliderFactory对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
步骤2:通过DocumentBuliderFactory的DocumentBuilder方法创建DocumentBuilder对象
DocumentBuilder db=dbf.newDocmentBuilder();
步骤3:通过DocumentBuilder的parse方法解析文件
Document document=db.parse("books.xml"); //(ORG.W3C)包下
4、XML中常用节点类型
package domtest;
import java.io.IOException;
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMTest {
public static void main(String[] args) {
//创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//创建一个DocumentBuilder的对象
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document document =db.parse("F:/LearnJava/DOMTest/book.xml");
NodeList bookList = document.getElementsByTagName("book");
System.out.println("共有"+ bookList.getLength()+"本书");
for (int i = 0; i < bookList.getLength(); i++) {
//通过item(i)方法获取一个book节点,nodeList的索引值从0开始
Node book = bookList.item(i);
//获取属性集合
NamedNodeMap attrs = book.getAttributes();
System.out.println("第"+ (i + 1) +"本书共有"+ attrs.getLength() +"属性");
//遍历book的属性
for (int j = 0; j < attrs.getLength(); j++) {
Node attr = attrs.item(j);
System.out.print("属性名:"+attr.getNodeName());
System.out.println(" 属性值:"+attr.getNodeValue());
}
//前提知道只有一个属性id
//首先强制类型转换成Element
// Element book = (Element) bookList.item(i);
// System.out.println("id="+book.getAttribute("id"));
NodeList childNode = book.getChildNodes();
for (int j = 0; j < childNode.getLength(); j++) {
Node node = childNode.item(j);
//区分text类型Node和element类型node
if (node.getNodeType() == Node.ELEMENT_NODE) {
//输出节点名
System.out.print(node.getNodeName());
//输出节点值
//认为
// System.out.println("为:"+node.getFirstChild().getNodeValue());
System.out.println("为:"+node.getTextContent());
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}catch (SAXException | IOException e) {
e.printStackTrace();
}
}
}
参考:http://blog.csdn.net/u012965373/article/details/43988591
http://www.imooc.com/video/3850