java解析XML实例

(转:http://blog.163.com/liucy_18/blog/static/53192906201062605514991/)

import java.io.File;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

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;
import org.w3c.dom.Element;
public class Xmltest {
public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        //从 XML 文档获取 DOM 文档实例。使用此类,应用程序员可以从 XML 获取一个Document
//  创建解析工厂指定DocumentBuilder 
        DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document document=db.parse(new File("F:\\111.xml"));//把文件解析成DOCUMENT类型
      //  Element root = document.getDocumentElement();  //得到Document的根(节点名:book)
       // System.out.println("根节点标记名:" + root.getTagName()); 
        System.out.println("*****下面遍历XML元素*****"); 
        Element root=document.getDocumentElement() ;
        String rootName=root.getNodeName();
        System.out.println("XML文件根节点的名字:"+rootName);
        NodeList list=root.getElementsByTagName_r("dbstore");//获得page元素
        //NodeList list=document.getElementsByTagName_r("dbstore");//获得page元素这个和上面一行效果一样
       // System.out.println(list.getLength()); 
        showElem(list);      
      
    }
public static void showElem(NodeList nl){
   for(int i=0;i<nl.getLength();i++){
             Node n=nl.item(i);//得到父节点
             if(n.hasChildNodes())
             {
             NamedNodeMap attributes=n.getAttributes(); //遍历节点所有属性如<dbstore single="false" att="tta">
            // System.out.println(attributes.getLength());
             for(int j=0;j<attributes.getLength();j++)
             {
              Node attribute=attributes.item(j);
               //得到属性名
              String attributeName=attribute.getNodeName();
              System.out.println("属性名:"+attributeName);
              //得到属性值
              String attributeValue=attribute.getNodeValue();
              System.out.println("属性值:"+attributeValue);
          }//打印出结果属性名:att属性值:tta属性名:single属性值:false
           
           
             }
             //子节点
          NodeList childList=n.getChildNodes();
          for(int x=0;x<childList.getLength();x++)
          {
            Node childNode=childList.item(x);
            //判断取出的值是否属于Element元素,目的是过滤掉
            if(childNode instanceof Element)
               {
                   //得到子节点的名字
                   String childNodeName=childNode.getNodeName();
                   System.out.println("子节点名:"+childNodeName);
                   //得到子节点的值
                   String childNodeValue=childNode.getTextContent();
                   System.out.println("子节点值:"+childNodeValue);
               }
          } showElem(n.getChildNodes());//递归
             
             }
 
           
           
   }
 
}


*************************************xml如下:

<?xml version="1.0" encoding="gb2312" ?>

<test>
     <dbstore single="false" att="tta">

<className dd="00000">com.DBImpl</className>
         <methodName dd="222">setHashMap</methodName>
         <methodArgsType>java.util.HashMap</methodArgsType>
         <driver>com.mysql.jdbc.Driver</driver>
         <url>jdbc:mysql://localhost:3306/fengzi</url>
         <username>root</username>
         <password>root</password>
         <batchSize>1000</batchSize>
     </dbstore>
        <dbstore single="1" att="1">
         <className>1</className>
         <methodName>1</methodName>
         <methodArgsType>j1</methodArgsType>
         <driver>1</driver>
         <url>1</url>
         <username>1</username>
         <password>1t</password>
         <batchSize>1</batchSize>
     </dbstore>
</test>


*********************************************输出结果:

*****下面遍历XML元素*****
XML文件根节点的名字:test
属性名:att
属性值:tta
属性名:single
属性值:false
子节点名:className
子节点值:com.DBImpl
子节点名:methodName
子节点值:setHashMap
子节点名:methodArgsType
子节点值:java.util.HashMap
子节点名:driver
子节点值:com.mysql.jdbc.Driver
子节点名:url
子节点值:jdbc:mysql://localhost:3306/fengzi
子节点名:username
子节点值:root
子节点名:password
子节点值:root
子节点名:batchSize
子节点值:1000
属性名:dd
属性值:00000
属性名:dd
属性值:222
属性名:att
属性值:1
属性名:single
属性值:1
子节点名:className
子节点值:1
子节点名:methodName
子节点值:1
子节点名:methodArgsType
子节点值:j1
子节点名:driver
子节点值:1
子节点名:url
子节点值:1
子节点名:username
子节点值:1
子节点名:password
子节点值:1t
子节点名:batchSize
子节点值:1

你可能感兴趣的:(java,xml,mysql,jdbc,Blog)