Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 369|回复: 0

[默认分类] java后台解析XML文件

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-10 13:16:38 | 显示全部楼层 |阅读模式

    解析XML文件分为两种:1、DOM(Document Object Model)         2、SAX(Simple API for XML)
                                             DOM是基于XML文档树结构的解析,SAX是基于事件流的解析。
    我用到的是SAX解析>>
    一、XML文件

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <root>
    3.         <area position="left">
    4.                 <portal>
    5.                         <order>left1</order>
    6.                         <title>推送信息</title>
    7.                         <height>0.38</height>
    8.                         <type>tsxx</type>
    9.                         <dataurl>http://www.baidu.com</dataurl>
    10.                 </portal>
    11.                 <portal>
    12.                         <order>left2</order>
    13.                         <title>最热关注</title>
    14.                         <height>0.25</height>
    15.                         <type>zrgz</type>
    16.                         <dataurl>http://www.baidu.com</dataurl>
    17.                 </portal>
    18.                 <portal>
    19.                         <order>left3</order>
    20.                         <title>点击量排行</title>
    21.                         <height>0.36</height>
    22.                         <type>djlph</type>
    23.                         <dataurl>http://www.baidu.com</dataurl>
    24.                 </portal>
    25.         </area>
    26.         <area position="center">
    27.                 <portal>
    28.                         <order>center1</order>
    29.                         <title>国家政策</title>
    30.                         <height>0.33</height>
    31.                         <type>gjzc</type>
    32.                         <dataurl>http://www.baidu.com</dataurl>
    33.                 </portal>
    34.                 <portal>
    35.                         <order>center2</order>
    36.                         <title>地方政策</title>
    37.                         <height>0.33</height>
    38.                         <type>dfzc</type>
    39.                         <dataurl>http://www.baidu.com</dataurl>
    40.                 </portal>
    41.                 <portal>
    42.                         <order>center3</order>
    43.                         <title>电改新闻</title>
    44.                         <height>0.33</height>
    45.                         <type>dgxw</type>
    46.                         <dataurl>http://www.baidu.com</dataurl>
    47.                 </portal>
    48.         </area>
    49.         <area position="right">
    50.                 <portal>
    51.                         <order>right1</order>
    52.                         <title>会议通知</title>
    53.                         <height>0.45</height>
    54.                         <type>hytz</type>
    55.                         <dataurl>http://www.baidu.com</dataurl>
    56.                 </portal>
    57.                 <portal>
    58.                         <order>right2</order>
    59.                         <title>最新发布</title>
    60.                         <height>0.3</height>
    61.                         <type>zxfb</type>
    62.                         <dataurl>http://www.baidu.com</dataurl>
    63.                 </portal>
    64.                 <portal>
    65.                         <order>right3</order>
    66.                         <title>我的收藏</title>
    67.                         <height>0.24</height>
    68.                         <type>wdsc</type>
    69.                         <dataurl>http://www.baidu.com</dataurl>
    70.                 </portal>
    71.         </area>
    72. </root>
    复制代码


    二、后台解析过程

    1. SAXReader reader = new SAXReader();
    2.                 InputStream in = null;
    3.                 try {
    4.                         map.clear();
    5.                         // 通过reader对象的read方法加载zhcxdoc.xml文件,获取docuemnt对象。
    6.                         in = TfZhcxdocServiceImpl.class.getResourceAsStream("/zhcxdoc.xml");
    7.                         Document document = reader.read(in);
    8.                         // 通过document对象获取根节点root
    9.                         Element root = document.getRootElement();
    10.                         // 通过element对象的elementIterator方法获取迭代器
    11.                         Iterator<Element> rootIt = root.elementIterator();
    12.                         // 遍历迭代器,获取根节点中的信息
    13.                         String key;
    14.                         List<Map<String, String>> list;
    15.                         Map<String, String> mapdata;
    16.                         while (rootIt.hasNext()) {
    17.                                 Element area = rootIt.next();
    18.                                 key = area.attribute("position").getValue(); // 取xml中某元素的属性的值
    19.                                 Iterator<Element> areaIt = area.elementIterator();
    20.                                 list = new ArrayList<Map<String, String>>();
    21.                                 while (areaIt.hasNext()) {
    22.                                         Element panel = areaIt.next();
    23.                                         Iterator<Element> panelIt = panel.elementIterator();
    24.                                         mapdata = new HashMap<String, String>();
    25.                                         while (panelIt.hasNext()) {
    26.                                                 Element data = panelIt.next();
    27.                                                 mapdata.put(data.getName(), data.getStringValue());
    28.                                                 map.put(key, list);
    29.                                         }
    30.                                         list.add(mapdata);
    31.                                 }
    32.                         }
    33.                 } catch (DocumentException e) {
    34.                         e.printStackTrace();
    35.                 } finally {
    36.                         try {
    37.                                 if (null != in) {
    38.                                         in.close();
    39.                                 }
    40.                         } catch (IOException e) {
    41.                                 e.printStackTrace();
    42.                         }
    43.                 }
    复制代码

    三、需要的包

    1. import java.io.IOException;
    2. import java.io.InputStream;
    3. import java.util.ArrayList;
    4. import java.util.HashMap;
    5. import java.util.Iterator;
    6. import java.util.List;
    7. import java.util.Map;
    8. import org.dom4j.Document;
    9. import org.dom4j.DocumentException;
    10. import org.dom4j.Element;
    11. import org.dom4j.io.SAXReader;
    复制代码

    四、使用该方法XML文件所放位置
    在工程下的资源包下,如果需要再放入深入一点的包中,需要在后台代码中将路径改变







    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-3-29 04:20 , Processed in 0.353680 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表