Java中的Xml文件解析(DOM)

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文件匹配。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章