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 } } |
分类:
Java
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!