记一次让我多加班半个小时的xml解析问题

目录

 

一:记一次让我多加半个小时的xml解析问题

1:接受的报文

2:合理的报文格式

3:处理方式


一:记一次让我多加半个小时的xml解析问题

1:接受的报文

最近在做消息中间件接受数据的需求 ,对方发xml文件发我,还没到编码就没注意看报文了,当我开始敲代码的时候需要解析这个xml文件的时候 ,心里一万个草泥马在奔腾,下面先看看数据结构,如下图

2:合理的报文格式

大家看到出来有什么蹩脚的地方没有,再看看我希望的数据结构是啥样

 

3:处理方式

对比下 这两个报文 有啥不同嘛 ,第二个报文比第一个报文 多了一个节点,这多了一个节点 我就可以用工具类,一行代码就能转换成我想要的数据,如果是上面的那个结构,在实际解析过程中不知道会有多少个itab节点 ,处理起来还是比较麻烦,如果如我所愿的化,多个employees节点,解析的时候就不用关系实际有多少个itab节点,用List<Object> 对象来接,多方便,因为这是个很老的接扣,没办法让别人动 ,只能 自己硬编码去解析这个玩意。

我用的是dom4j来解析

 List employee = document.selectNodes("/MbfService/input1/MbfBody/iTab");
            Iterator itemp = employee.iterator();
            while (itemp.hasNext()) {
                ITab iTab = new ITab();
                Element elm = (Element) itemp.next();
                // 所有一级子节点的list
                List<Element> listElement = elm.elements();
                Iterator subList = listElement.iterator();
                int i = 0;
                while (subList.hasNext()) {
                    Element subElm = (Element) subList.next();
                    if (i == 0) {
                        //拿到数据后进行解密  0:表示姓名
                        String value = decryptValue(randomSecrity, subElm.getText());
                        iTab.setName(value);
                    }
                }

 

在执行到第一行的时候 报错 提示  ClassNotFoundException ,就这个错误 让多加了帮个小时 ,这个错误大家应该经常看到吧 ,我看到却没有关注,以为是方法使用的问题,dom4j已经很久没关注过,或者使用,还是大学刚毕业那会用到的 ,后来找了度量 ,才发发现是少了类,然后重新加了依赖,问题解决了,白白的多加了半个小时。

依赖 我贴在下方


                <dependency>
                    <groupId>com.fasterxml.jackson.dataformat</groupId>
                    <artifactId>jackson-dataformat-xml</artifactId>
                    <version>2.8.11</version>
                </dependency>

                <!-- https://mvnrepository.com/artifact/jaxen/jaxen -->
                <dependency>
                    <groupId>jaxen</groupId>
                    <artifactId>jaxen</artifactId>
                    <version>1.1.6</version>
                </dependency>

 

问题到这 解决了,记录下 。同事在参考之前的项目的写法 ,使用了模板模式,有xml和json两种格式的消息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值