`
keney_oak
  • 浏览: 27301 次
社区版块
存档分类
最新评论

java 中XML 的解析,转换

阅读更多

 

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 多级

    本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:DOM(文档对象模型)和SAX(简单API for XML)。DOM解析器会将整个XML文件加载到内存中,形成一个树形...

    java心电图xml解析.zip

    Java XML解析是Java开发中的一项重要技能,尤其是在处理结构化数据时。XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于配置文件、数据交换和文档存储等领域。本压缩包“java心电图xml解析....

    java将xml串转换成Map类型

    将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map

    java 解析XML性能对比分析Demo

    本文将深入探讨几种不同的XML解析方法,并通过实际的“Java解析XML性能对比分析Demo”来展示它们的性能差异。我们将讨论DOM、SAX、JDOM、DOM4J和JAXB这五种解析器,以及它们各自的特点和适用场景。 1. DOM(文档...

    java解析xml字符串

    通过以上分析,我们可以看到使用JDOM库在Java中解析和操作XML字符串的完整过程。这包括了如何将XML字符串转换为可读写的数据结构,以及如何遍历、读取和修改XML文档的元素和属性。这对于在Java应用程序中处理动态...

    java xml 解析包

    Java XML解析包主要指的是用于处理XML(eXtensible Markup Language)文档的库,它使得在Java程序中读取、写入、修改和操作XML变得简单。本篇将详细介绍使用Java进行XML解析的关键知识点,以dom4j-1.6.1为例。 1. *...

    通过JAXB实现完成java对象和xml的互相转换

    在本文中,我们将深入探讨如何使用JAXB实现Java对象与XML的互相转换。 首先,我们需要理解JAXB的基本工作原理。JAXB基于Java注解,这些注解用于标记Java类和它们的属性,以便JAXB知道哪些元素和属性应该映射到XML中...

    java代码pdf解析成xml.rar

    Java代码PDF解析成XML是一项技术任务,涉及到Java编程语言、PDF文档处理和XML数据格式转换。在这个场景中,我们主要关注如何使用Java库iTextPDF将PDF文档中的内容解析为XML结构。 首先,我们需要理解PDF(Portable ...

    java转换xml、list、map和json

    在Java中,xml和map之间的转换可以通过使用dom4j库来实现。dom4j是一个Java开源库,提供了对XML文档的解析和生成功能。 例如,在上面的代码中,maptoXml方法将Map对象转换为xml字符串。该方法首先创建了一个...

    XmlUtils.java xml解析工具包

    XML交互时方便进行XML格式转换,包含XML格式数据转换成list对象方法,参数拼接成XML方法

    Java实现XML解析【JDom】

    Java中的XML解析是处理XML数据的关键技术,JDom是一个高效的、纯Java的XML处理库,它为Java开发者提供了便捷的方式来创建、修改和读取XML文档。在这个资源中,我们将探讨如何利用JDom来解析XML文件,并从MySQL数据库...

    如何在Java中将XML文档转换成HTML文档.pdf

    1. **导入相关包**:在Java程序中使用XSLT进行转换前,需要导入必要的包,如`javax.xml.transform`、`javax.xml.transform.stream`和`javax.xml.transform.dom`等,这些包提供了执行XSLT转换所需的类和接口。...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    在Java编程环境中,解析XML文件是一项常见的任务,特别是在数据处理和集成中。XML(Extensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。本教程将介绍如何使用Java解析XML文件,并将解析...

    java xml文件解析

    DOM4J是一个基于Java的高效XML解析库,它是对DOM和SAX API的一个简单而强大的封装。DOM4J提供了更简洁的API,使得XML的解析和操作更加容易。DOM4J已成为XML解析的一种流行选择。 ### 性能对比 不同解析方式之间的...

    Java中四种XML解析技术详解

    在实际开发中,根据项目需求和性能考虑,可以选择合适的XML解析技术。例如,如果需要快速查找或修改XML数据,DOM可能是好选择;如果内存有限,SAX或StAX更为合适;如果涉及大量Java对象和XML之间的转换,JAXB则是...

    java实现Xml与json之间的相互转换操作示例

    2. java实现Xml与json相互转换的必要性:在Web开发中,我们经常需要在前后端之间进行数据的交换,由于后端和前端使用的数据格式可能不同,这时候就需要实现数据格式的转换,尤其是在使用Java作为后端开发语言时,...

    JAVA调用webservice并解析xml

    总结,调用Java中的Web服务并解析XML涉及到了Web服务的基础概念、Java的Web服务客户端创建、XML解析技术以及实际的调用与响应处理。熟练掌握这些知识点,能够帮助开发者有效地集成和利用各种Web服务资源。

    java解析XML文件

    Java解析XML文件是Java开发中常见的一项任务,XML(eXtensible Markup Language)作为一种结构化数据存储格式,被广泛用于数据交换、配置文件和Web服务等场景。本篇文章将详细探讨Java如何利用DOM4J库来解析XML文件...

    java中使用xslt转换xml成为另一个xml

    在Java编程环境中,XML(可扩展标记语言)和XSLT(可扩展样式表语言转换)是处理和转换XML文档的常见工具。XSLT是一种专门用于将XML文档转换为其他XML、HTML或文本格式的语言。本文将详细介绍如何在Java中使用XSLT来...

Global site tag (gtag.js) - Google Analytics