JAVA中将xml转化为对象或将对象转为xml格式

在开发中有时候需要将xml文件解析为一个对象,方便在程序书写时获取相关的值或属性,有时需要将对象翻译成一个xml格式的内容,比如发报时,或内容传输时用xml格式是比较方便的,那如何将二者之间转化呢?不多说了,直接看代码:

    /**
     * 将xml字符串转化为对象
     * 
     * @param xmlString xml字符串
     * @param className 对象的class名称
     * @return 转化成的对象
     */
    public Object xmlStringTObject(String xmlString, String className) {
        // 创建一个读取xml文件的流
        StringReader xmlReader = new StringReader(xmlString);
        // 创建一个BeanReader实例,相当于转化器
        BeanReader beanReader = new BeanReader();
        // 注册要转换对象的类,并指定根节点名称
        Class clazz = null;
        try {
            clazz = Class.forName(className);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        try {
            beanReader.registerBeanClass(clazz);
        } catch (IntrospectionException e) {
            e.printStackTrace();
        }
        // 将XML解析Java Object
        Object obj = null;
        try {
            obj = beanReader.parse(xmlReader);
        } catch (IOException e) {
            e.printStackTrace();

        } catch (SAXException e) {
            e.printStackTrace();
        }
        return obj;
    }

    /**
     * 将对象转换为xml字符串
     * @param object 需要被转化的对象
     * @return
     */
    public String ObjectTXmlString(Object object) {
        String xmlString = null;
        // 创建一个输出流,将用来输出Java转换的XML文件
        StringWriter outputWriter = new StringWriter();
        // 输出XML的文件头
        outputWriter.write("<?xml version='1.0' encoding='ISO8859-1'?>\n");
        // 创建一个BeanWriter实例,并将BeanWriter的输出重定向到指定的输出流
        BeanWriter beanWriter = new BeanWriter(outputWriter);
        // 配置BeanWriter对象
        beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);
        beanWriter.getBindingConfiguration().setMapIDs(false);
        beanWriter.setWriteEmptyElements(false);
        try {
            beanWriter.write(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
        xmlString = outputWriter.toString();
        // 关闭输出流
        try {
            outputWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return xmlString;
    }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值