java解析xml(使用jdom解析xml)

第一步:

  装入jar包:下载地址:http://www.jdom.org/downloads/index.html

第二步:

  在项目中加入jar包 jdom-2.06.jar

  放入lib中

第三步:

  你需要有一个xml来,让你解析

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
        <Key Name="China">
            <Value Name="TextKey">China</Value>
            <Value Name="Enabled">true</Value>
            <Value Name="PhotoIDWidth">first PhotoIDWidth</Value>
            <Value Name="PhotoIDHeight">38</Value>
            <Key Name="Adult">
                <Value Name="CrownPercent">0.10</Value>
                <Value Name="HeadPercent">0.60AdultHeadPercent</Value>
            </Key>
            <Key Name="Child">
                <Value Name="CrownPercent">0.10</Value>
                <Value Name="HeadPercent">0.60ChildHeadPercent</Value>
            </Key>
        </Key>
        <Key Name="Australia">
            <Value Name="TextKey">Australia</Value>
            <Value Name="Enabled">true</Value>
            <Value Name="PhotoIDWidth">zhongjian PhotoIDWidth</Value>
            <Value Name="PhotoIDHeight">45</Value>
            <Key Name="Adult">
                <Value Name="CrownPercent">0.061</Value>
                <Value Name="HeadPercent">0.756"Adult"HeadPercent</Value>
            </Key>
            <Key Name="Child">
                <Value Name="CrownPercent">0.072</Value>
                <Value Name="HeadPercent">0.711ChildHeadPercent</Value>
            </Key>
        </Key>
        <Key Name="Austria">
            <Value Name="TextKey">Austria</Value>
            <Value Name="Enabled">true</Value>
            <Value Name="PhotoIDWidth">last PhotoIDWidth</Value>
            <Value Name="PhotoIDHeight">45</Value>
            <Key Name="Adult">
                <Value Name="CrownPercent">0.064</Value>
                <Value Name="HeadPercent">0.744AdultHeadPercent</Value>
            </Key>
            <Key Name="Child">
                <Value Name="CrownPercent">0.078</Value>
                <Value Name="HeadPercent">0.689ChildHeadPercent</Value>
            </Key>
        </Key>
</Configuration>

第四部:

  然后你需要有一个java来办这件事:

  

package ReadJdom;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class ReadJm {
    public static void main(String[] args) throws JDOMException, IOException {
         //新建构造器解析xml
         SAXBuilder sax = new SAXBuilder();
         //建一个文档去接受数据
         Document doc = sax.build("readjm.xml");
        //获取根元素
        Element root = doc.getRootElement();
        //定位到<Configuration> -> <Key>
        List<Element> list = root.getChildren("Key");
        List<Element> children = new ArrayList<Element>();
        List<Element> childrens = new ArrayList<Element>();
        System.out.println( list.size());
        for (int i = 0; i < list.size(); i++) {
            Element element =(Element) list.get(i);
            System.out.println(element.getAttributeValue("Name"));//第二层节点
            children = element.getChildren("Value"); 
            for (int j = 0; j < children.size(); j++) {
                //System.out.println(children.size());子节点下面有多少个位Value的KV
                Element elementC =(Element) children.get(j);//第三层节点
                //System.out.println(elementC.getAttributeValue("Name"));得到第三层节点属性为Name的值
                //定位到<Configuration> -> <Key>  -> <Value Name="PhotoIDWidth">
                if(elementC.getAttributeValue("Name").equals("PhotoIDWidth")){
                    //获取<Configuration> -> <Key>  -> <Value Name="PhotoIDWidth"> 属性值
                    System.out.print("<--------->"+elementC.getAttributeValue("Name"));
                    //获取<Configuration> -> <Key>  -> <Value Name="PhotoIDWidth"> 标签里内容
                    System.out.print(","+elementC.getText());
                }
            }
            children.clear();
            //定位到<Configuration> -> <Key>  -> <Key>
            children = element.getChildren("Key");
            for (int k = 0; k < children.size(); k++) {  //第三层节点        
                Element elementChildren =(Element) children.get(k);  
                //定位到<Configuration> -> <Key>  -> <Key Name="Child">
                if(elementChildren.getAttributeValue("Name").equals("Child")){
                     childrens = elementChildren.getChildren("Value");
                     for (int j = 0; j < childrens.size(); j++) {//第四层节点
                         Element elementChildrens =(Element) childrens.get(j);//注意这里是childrens   <Value Name="CrownPercent">0.10</Value>  这里是第四层
                         //定位到<Configuration> -> <Key>  -> <Key Name="Adult"> -> <Value Name="HeadPercent">
                         if(elementChildrens.getAttributeValue("Name").equals("HeadPercent")){
                             System.out.println("<--------->"+elementChildrens.getText());
                         }
                    }
                }
            }
        }
    }
}

 

 第五步:查看结果:

  

个人心得:

  今天也是刚用之前的都忘完了, 主要是你需要把xml读入doc中,然后去访问根结点,然后访问子节点然后这个时候子节点,你就需要存在一个list中,然后拿到根节点的子节点时,再去访问下个子节点。

posted @ 2018-04-02 16:15  亮sir  阅读(241)  评论(0)    收藏  举报