Java解析XML字符串格式

Java解析XML字符串格式

前言

java解析XML字符串格式使用的是Dom4j这一种方式;

dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的。如今可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。

使用Dom4j是hibernate底层也是通过Dom4j来实现的

代码示例

pom.xml中引入dom4j包

<dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

代码实现

public static void main(String[] args) {
        String parseStr = null;
        String returnMsg = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+
                "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+
                "<row resultcount=\"1\">"+
                "<users_id>1001     </users_id>"+
                "<users_name>wangwei   </users_name>"+
                "<users_group>80        </users_group>"+
                "<users_address>1001号   </users_address>"+
                "</row>"+
                "<row resultcount=\"2\">"+
                "<users_id>1002     </users_id>"+
                "<users_name>wangwei   </users_name>"+
                "<users_group>80        </users_group>"+
                "<users_address>1002号   </users_address>"+
                "</row>"+
                "</Result>";

        try {
            Document doc = DocumentHelper.parseText(returnMsg);
            Element roots = doc.getRootElement();
            //System.out.println("根节点 = [" + roots.getName() + "]");
            //System.out.println("内容:" + roots.getText());
            parseStr = roots.getText();
            Iterator elements=roots.elementIterator();
            while (elements.hasNext()){
                Element child= (Element) elements.next();
                //System.out.println("节点名称 = [" + child.getName() + "]"+"节点内容:"+child.getText());
                List subElemets=child.elements();
                //System.out.println(subElemets.size());
                List<Map<String,Object>> treeMapList = new ArrayList<>();
               for(int i=0;i<subElemets.size();i++){
                   Map<String,Object> mapData = new HashedMap();
                   Element subChild= (Element) subElemets.get(i);
                   mapData.put(subChild.getName(),subChild.getText());
                   treeMapList.add(mapData);
                   //System.out.println("子节点名称:"+subChild.getName()+";子节点内容:"+subChild.getText());
               }
                System.out.println(treeMapList);
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        //System.out.println(parseStr);
       // return parseStr;
    }

结果展示

在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值