java 读取xml实例_java读取xml文件实例记录 - 日常工作的笔记

直接上代码

package com.XXX.service.util;

import com.xxx.sca.model.readxml.Result; // xml要转的javabean,需要自己根据实际需求定义;

import com.thoughtworks.xstream.XStream; // 使用XStream等技术

import com.thoughtworks.xstream.io.xml.DomDriver;

import com.thoughtworks.xstream.mapper.MapperWrapper;

import com.thoughtworks.xstream.security.AnyTypePermission;

import org.dom4j.io.SAXReader; // 引用dom4j技术

import java.io.File;

/**

* @ClassName: XStreamUtil

* @Description: JAVA解析xml文件工具类

* @Author: Chopper (18038120@qq.com)

* @Date: 2019-07-19 11:20

* @Version: 1.0

**/

public class XStreamUtil {

/**

* // xml 文件抬头

* @param

* @return

*/

private static String XML_TAG = "<?xml version='1.0' encoding='UTF-8'?>";

/**

* Description: 私有化构造

*/

private XStreamUtil() {

super();

}

/**

* // 为每次调用生成一个XStream

* @param

* @return xStream

*/

private static XStream getInstance() {

XStream xStream = new XStream(new DomDriver("UTF-8")) {

/**

* 忽略xml中多余字段

*/

@Override

protected MapperWrapper wrapMapper(MapperWrapper next) {

return new MapperWrapper(next) {

@SuppressWarnings("rawtypes")

@Override

public boolean shouldSerializeMember(Class definedIn, String fieldName) {

if (definedIn == Object.class) {

return false;

}

return super.shouldSerializeMember(definedIn, fieldName);

}

};

}

};

// 使用本地的类加载器

xStream.setClassLoader(XStreamUtil.class.getClassLoader());

// 允许所有的类进行转换

xStream.addPermission(AnyTypePermission.ANY);

return xStream;

}

/**

* // 将xml字符串转化为java对象

* @param xml (String) clazz

* @return class cast

*/

public static T xmlToBean(String xml, Class clazz) {

XStream xStream = getInstance();

xStream.processAnnotations(clazz);

Object object = xStream.fromXML(xml);

T cast = clazz.cast(object);

return cast;

}

/**

* // 将java对象转化为xml字符串

* @param object

* @return String xml

*/

public static String beanToXml(Object object) {

XStream xStream = getInstance();

xStream.processAnnotations(object.getClass());

// 剔除所有tab、制表符、换行符

String xml = xStream.toXML(object).replaceAll("\\s+", " ");

return xml;

}

/**

* // 读取xml文件转为String

* @param xmlFileName , xmlUrl

* @return

*/

public static String xmlToString(String xmlFileName){

SAXReader saxReader=new SAXReader();

org.dom4j.Document document;

String xmlString="";

try {

document = saxReader.read(new File(xmlFileName));

xmlString=document.asXML();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

xmlString="";

}

//String xmlString = document.asXML();

return xmlString;

}

// main方法测试

public static void main(String[] args) {

// 先读取xml文件并转为String字符串

String xml = (String) xmlToString("/Users/joe/work/Project/test.wav.xml");

// 查看读取结果有没有问题

System.err.println(xml);

// 再将xml文件的String字符串转为自定义的javaBean

Result xmlResult = xmlToBean(xml, Result.class);

// 查看bean对象结果

System.err.println(xmlResult.toString());

/* 1.转后的javabean可能存在问题:比如xml文件中 有  ... 标签,但是在转完bean之后,发现 count 和

duration 的值为null (count,duration 为String类型); 目前原因、解决办暂没找到;

2.此方法适用读取固定格式的xml文件;

*/

}

}

本人(java小白)日常工作中随笔记录点滴,希望广大开发者给与帮助或建议!!!

本人QQ: 18038120 (常在), 钉钉号: h18038120 (常在)

此致

敬礼!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值