Java XML解析

Java引用XStream解析xml文件生成一个对应的对象

xml文本

<?xml version="1.0" encoding="UTF-8"?>
<基本信息>
    <姓名>张三</姓名>
    <code>450011</code>
</基本信息>

映射对象

@XStreamAlias("基本信息")
public class MarriageRegistBasicInfoXmlModel implements Serializable {

    @XStreamAlias("姓名")
    private String name;
    
    @XStreamAlias("code")
    private String code;
}

xml文本和映射类主要是用@XStreamAlias(“基本信息”)进行绑定关系,支持中英文
核心代码

try (
                FileInputStream in = new FileInputStream("c://basicInfo.xml")
                ){
            XStream xStream = new XStream();
            // XStream设置默认安全防护 导致com.thoughtworks.xstream.security.ForbiddenClassException
            //XStream.setupDefaultSecurity(xStream);
            //	尽量限制所需的最低权限 这条语句解决com.thoughtworks.xstream.security.ForbiddenClassException
            xStream.addPermission(AnyTypePermission.ANY);
            xStream.autodetectAnnotations(true);
            xStream.processAnnotations(MarriageRegistBasicInfoXmlModel.class);
            byte[] bytes = new byte[1024];
            //每一次读取数据长度
            int currentRead;
            //已读取长度
            int alreadyRead = 0;
            //读取的所有数据
            byte[] all = null;
            while ((currentRead = in.read(bytes)) != -1) {
                int tempLength = alreadyRead + currentRead;
                byte[] temp = new byte[tempLength];
                if (Objects.nonNull(all)) {
                    //将之前已读数据复制到临时容器
                    System.arraycopy(all, 0, temp, 0, alreadyRead);
                }
                //当前读到的数据拼接到之前的已读数据
                System.arraycopy(bytes, 0, temp, alreadyRead, currentRead);
                //更新已读长度
                alreadyRead = tempLength;
                //最新的已读数据
                all = temp;
            }
            //读取xml文件必须全部读取完后然后转为字符串
            if (Objects.nonNull(all)) {
                MarriageRegistBasicInfoXmlModel basicInfoXmlModel = (MarriageRegistBasicInfoXmlModel) xStream.fromXML(new String(all));
                //todo:basicInfoXmlModel此对象就是解析得到的xml数据,根据自身业务进行具体操作
            }
        }catch (Exception e) {
            e.printStackTrace();
        }

jar包

<dependency>
       <groupId>com.thoughtworks.xstream</groupId>
       <artifactId>xstream</artifactId>
       <version>1.4.10</version>
</dependency>

整体梳理就是xml和映射对象根据@XStreamAlias(“基本信息”)注解绑定,XStream设置后进行对应解析得到对应的对象,然后根据具体业务进行下一步操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值