java xmlhelper_java对象与xml相互转换工具类

public class XmlHelper {

/**

* Object转XML

*

* @param object

* @return

* @throws Exception

*/

public static String ObjectToXml(Object object) throws Exception {

JAXBContext context = JAXBContext.newInstance(object.getClass()); // 获取上下文对象

Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象

marshaller.setProperty(Marshaller.JAXB_ENCODING, "GB2312"); // 设置编码字符集

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进

ByteArrayOutputStream baos = new ByteArrayOutputStream();

marshaller.marshal(object, baos);

String xmlObj = new String(baos.toByteArray()); // 生成XML字符串

return xmlObj.trim();

}

/**

* Object转XML

*

* @param object

* @return

* @throws Exception

*/

public static String ObjectToXmlUtf8(Object object) throws Exception {

JAXBContext context = JAXBContext.newInstance(object.getClass()); // 获取上下文对象

Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象

marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); // 设置编码字符集

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进

ByteArrayOutputStream baos = new ByteArrayOutputStream();

marshaller.marshal(object, baos);

String xmlObj = new String(baos.toByteArray()); // 生成XML字符串

return xmlObj.trim();

}

/**

* XML转Object

*

* @param xmlStr

* @param classz

* @return

*/

public static Object XmlToObject(String xmlStr, Class classz) {

try {

JAXBContext context = JAXBContext.newInstance(classz);

Unmarshaller unmarshaller = context.createUnmarshaller();

Object object = unmarshaller.unmarshal(new StringReader(xmlStr));

return object;

} catch (JAXBException ex) {

ex.printStackTrace();

return null;

}

}

/**

* xml格式字符串获取所有子节点存入list,每个List分两个部分:name和value,中间用“:”隔开

*

* @param srcXml

* @return

*/

public static List getListXML(String srcXml) {

//存储xml元素信息的容器

List elemList = new ArrayList();

List list = new ArrayList();

Document srcdoc = null;

try {

srcdoc = DocumentHelper.parseText(srcXml);

} catch (DocumentException e) {

e.printStackTrace();

}

Element elem = srcdoc.getRootElement();

getElementList(elem, elemList);

for (Iterator it = elemList.iterator(); it.hasNext(); ) {

Leaf leaf = it.next();

list.add(leaf.getName() + ":" + leaf.getValue());

}

return list;

}

/**

* 递归遍历方法

*

* @param element

*/

public static void getElementList(Element element, List elemList) {

List elements = element.elements();

if (elements.size() == 0) {

//没有子元素

//String xpath = element.getPath();

String xpath = element.getName();

String value = element.getTextTrim();

Leaf leaf = new Leaf(xpath, value);

elemList.add(leaf);

} else {

//有子元素

for (Iterator it = elements.iterator(); it.hasNext(); ) {

Element elem = (Element) it.next();

//递归遍历

getElementList(elem, elemList);

}

}

}

static class Leaf {

private String name;

private String value;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getValue() {

return value;

}

public void setValue(String value) {

this.value = value;

}

public Leaf(String name, String value) {

this.name = name;

this.value = value;

}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值