簡單介紹一下使用DOM解析XML文檔,解析XML文件案例:
<?xml version="1.0" encoding="UTF-8"?>-<pet>-<dog id="1"><姓名>小白</姓名><健康值>100</健康值><親密度>0</親密度><年齡>1歲</年齡></dog>-<dog id="2"><姓名>黃鼠狼</姓名><健康值>30</健康值><親密度>90</親密度><年齡>5歲</年齡></dog>-<dog id="3"><姓名>小東</姓名><健康值>90</健康值><親密度>10</親密度><年齡>3歲</年齡></dog></pet>
使用DOM解析XML文檔
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.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;/** * 使用DOM解析XML文檔 * @author Administrator * */public class DomReadXML { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //========使用DOM解析XML //第一步:建立DOM解析工廠對象實例 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { //第二步:從DOM解析工廠中獲取解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //第三步:解析XML文件;載入XML文件得到Document即DOM樹 Document dom = db.parse("file:///D:/Desktop/chapter14/教學演示案例/示例3:使用內部DTD文件/pet2.xml"); //得到所有狗狗節點信息 NodeList nl = dom.getElementsByTagName("dog"); System.out.PRintln(nl.getLength()); //循環取出信息 for (int i = 0; i < nl.getLength(); i++) { //得到每只狗狗節點 Node dog = nl.item(i); //得到狗狗的屬性(即ID) Element el = (Element)dog; String id = el.getAttribute("id"); System.out.println("ID:"+id); //獲取狗狗的子節點信息 for(Node dog_child = dog.getFirstChild();dog_child!=null;dog_child = dog_child.getNextSibling()){ //為了防止打印空格(即#text);需要判斷當前對象為Node節點對象 if(dog_child.getNodeType() == Node.ELEMENT_NODE){ String name = dog_child.getNodeName(); String value = dog_child.getFirstChild().getNodeValue(); System.out.println(name+":"+value); } } } } 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(); } }}
新聞熱點
疑難解答