import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
public class XmlParser {
/***
* 把对象格式为XML字符串
*
* @param obj
* @param c
* @return
* @throws Exception
*/
public static <T> String format(T obj, Class<T> c) throws Exception {
JAXBContext jaxbContext = JAXBContext.newInstance(c);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter out = new StringWriter();
jaxbMarshaller.marshal(obj, out);
return out.toString();
}
/****
* 把XML字符串解析成对象
*
* @return
* @throws Exception
*/
public static <T> T parse(String xml, Class<T> c) throws Exception {
JAXBContext jaxbContext = JAXBContext.newInstance(c);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
@SuppressWarnings("unchecked")
T result = (T) jaxbUnmarshaller.unmarshal(new StringReader(xml));
return result;
}
/*
* 测试方法
* /
public static void main(String[] args) throws Exception{
System.out.println(format(Order.mock(), Order.class));
String xml = format(Order.mock(), Order.class);
System.out.println(parse(xml, Order.class));
}
}
----------------------------------------------------------------------------------------------------------------------
对象类Order
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Order")
public class Order implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String epcode;// 运单号,部分发货方式必填
private String userid;// 客户号
private String channel;// 发货方式
private String userOrderNumber;// 客户订单号
private String sendDate;// 发货日期
private String quantity;// 货品数量
private String packageNo;// 包裹号
private String insure;// 是否需要保险
private String memo;// 备注。会出现在拣货单上
private Goods goods;
@XmlElement(name = "Epcode")
public String getEpcode() {
return epcode;
}
public void setEpcode(String epcode) {
this.epcode = epcode;
}
@XmlElement(name = "Userid")
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
@XmlElement(name="Channel")
public String getChannel() {
return channel;
}
public void setChannel(String channel) {
this.channel = channel;
}
@XmlElement(name="OrderNumber")
public String getUserOrderNumber() {
return userOrderNumber;
}
public void setUserOrderNumber(String userOrderNumber) {
this.userOrderNumber = userOrderNumber;
}
@XmlElement(name="SendDate")
public String getSendDate() {
return sendDate;
}
public void setSendDate(String sendDate) {
this.sendDate = sendDate;
}
@XmlElement(name="Quantity")
public String getQuantity() {
return quantity;
}
public void setQuantity(String quantity) {
this.quantity = quantity;
}
@XmlElement(name="PackageNo")
public String getPackageNo() {
return packageNo;
}
public void setPackageNo(String packageNo) {
this.packageNo = packageNo;
}
@XmlElement(name="Insure")
public String getInsure() {
return insure;
}
public void setInsure(String insure) {
this.insure = insure;
}
@XmlElement(name="Memo")
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
@XmlElement(name="Goods")
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
@Override
public String toString() {
return "Order [epcode=" + epcode + ", userid=" + userid + ", channel="
+ channel + ", userOrderNumber=" + userOrderNumber
+ ", sendDate=" + sendDate + ", quantity=" + quantity
+ ", packageNo=" + packageNo + ", insure=" + insure + ", memo="
+ memo + ", goods=" + goods + "]";
}
/***
* 填充测试数据
* @return
*/
public static Order mock() {
Order order = new Order();
order.setChannel("amazion");
order.setEpcode("156889635520");
order.setUserid("1002");
order.setPackageNo("20160808");
Goods goods = new Goods();
goods.setSku("10008987666");
goods.setGoodsName("袜子");
goods.setWeight("12KG");
goods.setDeclaredCurrency("US");
order.setGoods(goods);
return order;
}
-----------------------------------------------------------------------------------------------------------------
对象类Goods
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Goods")
public class Goods {
private String sku;
private String goodsName;
private String weight;
private String declaredCurrency;
@XmlElement(name="Sku")
public String getSku() {
return sku;
}
public void setSku(String sku) {
this.sku = sku;
}
@XmlElement(name="GoodsName")
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
@XmlElement(name="Weight")
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
@XmlElement(name="DeclaredCurrency")
public String getDeclaredCurrency() {
return declaredCurrency;
}
public void setDeclaredCurrency(String declaredCurrency) {
this.declaredCurrency = declaredCurrency;
}
}
相关推荐
企业级应用 java 解析多级xml 多么复杂的都可以, 一个类,一个jar 包,非常实用,希望大家顶起..
XML交互时方便进行XML格式转换,包含XML格式数据转换成list对象方法,参数拼接成XML方法
NULL 博文链接:https://xiongpan0807.iteye.com/blog/1832124
基于DOM4j和POI实现的XML文件转换为XLS(即标准EXCEL)的JAVA程序
java转换xml、list、map和json
支持把需要的pdf图片文件解析成xml串输出。请严格根据里面提供的maven依赖以及com.itextpdf该目录层级名称进行测试
java中xml解析方法的介绍,以及基本的应用
java解析xml根式数据
实现的一个简单的基于java 的,可以在xml和json之间相互转换的工具类,因为实在没有积分了,所以要点积分,希望理解~
java&android;解析xml 将xml转换为json java&android;解析xml 将xml转换为json 原文地址:https://blog.csdn.net/u010838785/article/details/82258411
xml 与 bean 互相转换 工具类 1、bean类的属性需要遵守BEAN规范,否则 无法 读存BEAN值。 2、bean类的属性如果 是集合 只支持数组以及List、Map、Set。 3、bean类属性(boolean除外)前面两个字母要么全部小写,要么...
java一键xml转map,一键map转xml工具类,代码已封装好,一个方法即可将两种格式文本互转,注意是互转,网上很多只有xml转map,并不支持map转xml
基于Java的XML解析与反射设计模式 摘要:随着计算机时代的蓬勃发展,internet的普及给社会以及人民的生活带来了巨 大的影响。与此同时,b/s结构的多系统相互访问技术应时代的发展也如雨后春笋般不断 涌现出来,相应...
用jdom解析xml到txt
解析xml,生成java类,解析转换工具帮手,希望对大家有用
xmlbeans-3.0.1.jar是一个用于处理XML文档的Java库,它提供了强大的XML数据绑定和解析功能,使开发者能够更轻松地在Java应用中操作和处理XML数据。 【使用人群】 适用于Java开发者、数据处理专家和需要在Java应用中...
文件里包含jar包 dom4j-1.6.1.jar,list中放多个map,map里随意放键值对,最后可转换为xml文档,xml文档也可以解析存入list文件中
FastXml是一个简单、高性能、极少内存消耗的基于xml pull机制的java xml解析器。性能最好的xml解析器:性能是VTD-XMl的3倍,是XPP3/MXP1的2倍,详见性能测试数据和测试代码 几乎不消耗额外的内存:内存消耗比XPP3...
实现javabean转换xml,以及xml转换javabean,,尤其是做数据对接时,使用webservice时,很方便
解析web-config.xml文件,并将里面的元素转换成对应的JAVA对象