用JDK自帶的包來解析XML檔案(DOM+xpath)
阿新 • • 發佈:2019-02-14
DOM程式設計不要其它的依賴包,因為JDK裡自帶的JDK裡含有的上面提到的org.w3c.dom、org.xml.sax 和javax.xml.parsers包就可以滿意條件了。
(1)org.w3c.dom W3C推薦的用於XML標準規劃文件物件模型的介面。
(2)org.xml.sax 用於對XML進行語法分析的事件驅動的XML簡單API(SAX)
(3)javax.xml.parsers解析器工廠工具,程式設計師獲得並配置特殊的特殊語法分析器。
先來寫一個xml檔案(DTD檔案請參閱XML DTD那篇博文):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "D:\workspace\XML\WebRoot\WEB-INF\book.dtd">
<book>
<bookname
name="XML詳解" font="GB2312"></bookname>
<authors>
<author
name="張孝祥" sex="男" age="45"></author>
<author
name="王勇" sex="男" age="35"></author>
<author
name="王波" sex="男" age="30"></author>
</authors>
<price
value="¥55"></price>
<publishdate>
<value>2009-08-18</value>
</publishdate>
</book>
再來寫解析xml檔案的java檔案:
package com.xml.jdk;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XPathForXml {
public
void parseXMLWithJdk(){
try
{
//讀取book.xml到記憶體
DocumentBuilderFactory
dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder
dbd = dbf.newDocumentBuilder();
Document doc =
dbd.parse(new FileInputStream("D:\\workspace\\XML\\WebRoot\\WEB-INF\\book.xml"));
//通過XML獲得book的authors的author子節點列表
XPathFactory
f = XPathFactory.newInstance();
XPath path = f.newXPath();
NodeList authors=
(NodeList) path.uate("book/authors/author", doc,XPathConstants.NODESET);
System.out.println(authors.getLength());
//遍歷取到的元素
if(authors!=null){
for(int
i=0;i<authors.getLength();i++){
Node
author =
authors.item(i);
int
n = i + 1;
System.out.print(n+". 名字:"+author.getNodeName());
(1)org.w3c.dom W3C推薦的用於XML標準規劃文件物件模型的介面。
(2)org.xml.sax 用於對XML進行語法分析的事件驅動的XML簡單API(SAX)
(3)javax.xml.parsers解析器工廠工具,程式設計師獲得並配置特殊的特殊語法分析器。
先來寫一個xml檔案(DTD檔案請參閱XML DTD那篇博文):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book SYSTEM "D:\workspace\XML\WebRoot\WEB-INF\book.dtd">
<book>
</book>
再來寫解析xml檔案的java檔案:
package com.xml.jdk;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationExcep
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class XPathForXml {