Java中解析XML

MAVEN坐标:

<dependency>
<groupId>jdom</groupId>
<artifactId>jdom</artifactId>
<version>1.0</version>
</dependency>

XML格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="GBK"?>
<root>
    <head>
        <code>1</code>
        <message>数据下载成功</message>
        <rownum>1</rownum>
    </head>
</root>
<body>
    <veh id="0">
        <xh>1</xh>
        <hpzl>1</hpzl>
        <hphm>皖A123456</hphm>
        <clppl>皖A123456</clppl>
        <clxh>车辆类型</clxh>
        <clsbdh>车辆识别代号</clsbdh>
        <fdjh>发动机号</fdjh>
        <cllx>车辆类型</cllx>
        <csys>车身颜色</csys>
        <syxz>使用性质</syxz>
        <syr>机动车所有人</syr>
        <ccdjrg>初次登记日期</ccdjrg>
        <yxqz>检验有效期止</yxqz>
        <qzbfqz>强制报废期止</qzbfqz>
        <zt>机动车状态</zt>
        <fdjxh>发动机型号</fdjxh>
        <rlzl>燃料种类</rlzl>
        <pl>1</pl>
        <gl>1</gl>
        <zs>1</zs>
        <zj>1</zj>
        <zzl>总质量</zzl>
        <zbzl>整备质量</zbzl>
        <hdzzl>核定载质量</hdzzl>
        <hdzk>核定载客</hdzk>
        <ccrq>出厂日期</ccrq>
    </veh>
</body>

  

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package com.goldensky.common;
 
import java.io.StringReader;
import java.util.List;
 
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
 
public class Test {
 
    public static void main(String[] args) throws Exception {
         
 
        String xml = "<?xml version='1.0' encoding='GBK'?><root><head><code>1</code><message>数据下载成功</message><rownum>1</rownum></head><body><veh id='0'><xh>1</xh><hpzl>1</hpzl><hphm>皖A123456</hphm><clppl>皖A123456</clppl><clxh>车辆类型</clxh><clsbdh>车辆识别代号</clsbdh><fdjh>发动机号</fdjh><cllx>车辆类型</cllx><csys>车身颜色</csys><syxz>使用性质</syxz><syr>机动车所有人</syr><ccdjrg>初次登记日期</ccdjrg><yxqz>检验有效期止</yxqz><qzbfqz>强制报废期止</qzbfqz><zt>机动车状态</zt><fdjxh>发动机型号</fdjxh><rlzl>燃料种类</rlzl><pl>1</pl><gl>1</gl><zs>1</zs><zj>1</zj><zzl>总质量</zzl><zbzl>整备质量</zbzl><hdzzl>核定载质量</hdzzl><hdzk>核定载客</hdzk><ccrq>出厂日期</ccrq></veh></body></root>";
         
        getBean(xml);
         
    }
     
    public static void getBean(String xmlDoc)
    {
        //创建一个新的字符串
        StringReader read = new StringReader(xmlDoc);
      //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
        InputSource source = new InputSource(read);
        //创建一个新的SAXBuilder
        SAXBuilder sb = new SAXBuilder();
        try {
             
             //通过输入源构造一个Document
            Document doc =  sb.build(source);
          //取的根元素
            Element root = doc.getRootElement();
            System.out.println(root.getName());//输出根元素的名称(测试)
             
          //得到根元素所有子元素的集合
            List nodelist =  root.getChildren();
            Element et = null;
            Element ev = null;//veh下面的节点
             
            for(int i=0;i<nodelist.size();i++){
                et = (Element) nodelist.get(i);//循环依次得到子元素
                if(et.getName().equals("head"))
                {
                    System.out.println(et.getChild("code",null).getText());
                    System.out.println(et.getChild("message",null).getText());
                    System.out.println(et.getChild("rownum",null).getText());
                }
                else if(et.getName().equals("body"))
                {
                    System.out.print("开始读取Veh节点信息...");
                    List nd =et.getChildren();
                     for(int j=0;i<=nd.size();j++)
                     {
                         ev=(Element) nd.get(j);
                        //这里就是判断有多个veh,可以取多个veh下面的节点。根据我们的业务,就默认取第一个veh
                        List count= ev.getAttributes();
                         if(ev.getName().equals("veh"))
                         {
                           System.out.println(ev.getChild("xh",null).getText());
                           System.out.println(ev.getChild("hpzl",null).getText());
                           System.out.println(ev.getChild("hphm",null).getText());
                           System.out.println(ev.getChild("clxh",null).getText());
                           System.out.println(ev.getChild("clsbdh",null).getText());
                           System.out.println(ev.getChild("fdjh",null).getText());
                           System.out.println(ev.getChild("cllx",null).getText());
                           System.out.println(ev.getChild("csys",null).getText());
                           System.out.println(ev.getChild("syxz",null).getText());
                    
                         }
                     }
                     
                }
                     
                 
            }
             
             
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

  

posted @   寻找灯塔ing  阅读(816)  评论(0编辑  收藏  举报
编辑推荐:
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
点击右上角即可分享
微信分享提示