`

webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    博客分类:
  • java
阅读更多

 

//使用jaxb把xml转换Object或把对象转换成xml文件
public class Xml2Object {

 public static void main(String[] args) {
  
  //转换成对象
//  String xmlFile = "G:\\workspace\\jaxb\\src\\user.xml";
//  Class<User> clazz = User.class;
//  User u1 = xml2Obj(xmlFile, clazz);
//  System.out.println(u1);
  
  //使用jaxb转换成xml文件
  Class<User> clazz = User.class;
  User user = new User();
  user.setName("lisi");
  user.setAge(20);
  user.setBirthday(new Date());
  String xmlFile = "G:\\workspace\\jaxb\\src\\user3.xml";
  FileOutputStream os = null;
  try {
   os = new FileOutputStream(xmlFile);
  } catch (FileNotFoundException e) {
   e.printStackTrace();
  }
  obj2Xml(clazz, user, os);
 }

 public static <T> T xml2Obj(String xmlFile, Class<T> clazz){
  try{
         JAXBContext jc = JAXBContext.newInstance(clazz); 
         Unmarshaller u = jc.createUnmarshaller(); 
         InputStream is = new FileInputStream(xmlFile); 
         return (T)u.unmarshal(is);
  }catch(Exception e){
   e.printStackTrace();
  }
  return null;
 }
 
 public static <T> void obj2Xml(Class<T> clazz, T o, OutputStream os){
  try{
   JAXBContext context = JAXBContext.newInstance(clazz); 
         Marshaller marshaller = context.createMarshaller();  
         //编码格式  
         marshaller.setProperty(Marshaller.JAXB_ENCODING,"UTF-8"); 
         //是否格式化生成的xml串     
         marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
         //是否省略xml头信息(<?xml version="1.0" encoding="gb2312" standalone="yes"?>) 
         marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false); 
        
         marshaller.marshal(o, os);
  }catch(Exception e){
   e.printStackTrace();
  }
 }
}

 

/**
 * @XmlRootElement:根节点
       @XmlAttribute:该属性作为xml的attribute
       @XmlElement:该属性作为xml的element

 *@XmlElementWrapper(name="items")
 *@XmlType(name ="shop", propOrder = {"name", "number","describer", "address","orders"})
 *
 *@XmlJavaTypeAdapter(XmlyyyyMMddHHmmDateAdapter.class)
 *
 */

@XmlRootElement(name = "user")//设置根节点
@XmlAccessorType(XmlAccessType.FIELD)
public class User {
 
 @XmlElement(name="name",required=true,nillable=true)
 private String name;
 private int age;
 
 @XmlJavaTypeAdapter(DateConverter.class)
 private Date birthday;
 
 
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public Date getBirthday() {
  return birthday;
 }
 public void setBirthday(Date birthday) {
  this.birthday = birthday;
 }
 
 public String toString() {
  StringBuffer s = new StringBuffer();
  s.append("name=").append(name).append(",");
  s.append("age=").append(age).append(",");
  s.append("birthday=").append(birthday);
  return s.toString();
 }
 
}

user.xml 如下:

<?xml version="1.0" encoding="UTF-8"?>
<user>
 <name>xx</name>
 <age>12</age>
 <birthday>2017-01-02</birthday>
</user>

 

import javax.xml.bind.annotation.adapters.XmlAdapter;

 

//日期转换器:把Date类型转换成字符串格式
public class DateConverter extends XmlAdapter<String, Date>{

     private SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); 
  
     public Date unmarshal(String v) throws Exception { 
         if (v == null||"".equals(v)) { 
             return null; 
         } 
         return yyyyMMdd.parse(v); 
     } 
  
     public String marshal(Date v) throws Exception { 
         return yyyyMMdd.format(v); 
     } 
}

 

0
0
分享到:
评论

相关推荐

    JAXB工具类 xml转为java对象 java对象转为xml

    要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素对应。JAXB通过注解这些字段来完成映射,如`@XmlElement`、`@XmlAttribute`等。以下是一个简单的例子: ```java import javax.xml.bind....

    xml2object、object2xml之JAXB

    前段时间找了好久xml与object之间的转换都没找到!最近在学习WebService,讲到JAXB!没听说过!看了才知道jdk中自带了这个功能,什么这个框架那个框架都用了!原来就在眼前你也不知道!我这儿有视频,有需要请留言!...

    Jaxb webservice java调用

    Java中的JAXB(Java Architecture for XML Binding)是一个用于在Java对象和XML之间进行绑定的工具,使得我们可以方便地在XML文档和Java对象之间进行转换。它简化了Web服务的开发,尤其是在处理XML数据时。本篇文章...

    拼接xml调用webservice

    Java中,可以使用DOM、SAX或JAXB库来处理XML;在.NET环境中,有XmlDocument、XmlNode等类来处理XML。 5. **调用Web Service**:完成XML拼接后,客户端需要通过HTTP(POST请求)将XML发送到Web Service的URL。这通常...

    javabean和xml互相转换工具类以及jar包

    - **JAXB反序列化**:使用JAXBContext的Unmarshaller对象,可以直接将XML文件或输入流转换为JavaBean实例。 - **使用Apache Commons Betwixt**:与转换过程类似,Betwixt提供了从XML到JavaBean的反向映射功能。 ...

    WebService CXF 对象传递 附

    例如,如果输入参数是`MyObject`,CXF会利用JAXB将其从XML字符串转换为Java对象。 - **反序列化**:同样,服务方法返回的对象也会被CXF转换为XML,然后发送回客户端。 5. **JAXB的使用** - **注解Java类**:使用`...

    webservice调用天气预报、各国货币转换的核心代码

    它基于SOAP(Simple Object Access Protocol)协议,使用XML(Extensible Markup Language)作为数据交换格式。 2. **SOAP**:SOAP是一种轻量级的、简单的、基于XML的消息协议,用于在分布式环境中交换结构化和类型...

    webService客户端传xml请求 直接main方法运行

    在提供的标签"源码 工具"中,源码可能是指实现上述步骤的Java代码,而工具可能指的是如`wsimport`这样的工具,或者可能涉及到处理XML的库,如JAXB(Java Architecture for XML Binding)或DOM(Document Object ...

    WebService传递对象与集合问题.rar

    这个过程称为XML序列化,它将对象的状态转换成可以在网络上传输的XML字符串。在Java中,可以使用JAXB(Java Architecture for XML Binding)来实现;在.NET中,有XmlSerializer类用于此目的。 2. **复杂数据类型...

    webservice实例 CXF的JAXWS和JAXRS实现 及JAXB标准接口实现带jar包

    同时,JAXB(Java Architecture for XML Binding)是Java中处理XML和Java对象之间转换的标准接口。下面将详细介绍这些知识点。 首先,**JAX-WS** 是一种用于构建SOAP(Simple Object Access Protocol)Web服务的...

    json报文与XML互转

    XML转换方面,Java内置了javax.xml.bind.JAXB库,可以实现对象到XML的转换: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class MyObject { private String field1; ...

    java WebService全部jar文件

    在Java中实现Web Service通常涉及到一系列的库文件,也就是jar文件,这些文件包含了处理XML、SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和其他相关协议所需的类和方法。本资源包中的"java WebService全部...

    webservice接口调用工具类依赖jar包

    7. **jaxb-api.jar**,**jaxb-impl.jar** 和 **jaxb-core.jar**:Java绑定框架(JAXB),用于XML和Java对象之间的转换。 8. **xml-apis.jar** 和 **xercesImpl.jar**:XML解析相关的库,如Xerces,用于处理XML文档...

    webservice需要用到的jar包

    3. **JAXB**: Java Architecture for XML Binding,用于将Java对象转换为XML和反之亦然。JAR文件如`jaxb-api.jar`、`jaxb-impl.jar`、`jaxb-core.jar`等。 4. **SAAJ**: SOAP with Attachments API for Java,用于...

    Ant部署WebService服务

    在压缩包子文件`AntWebService`中,可能包含了一个示例`build.xml`文件,一些源代码,以及可能的配置文件,如`pom.xml`(Maven的项目对象模型)。读者可以通过解压并研究这些文件来加深对Ant部署Web Service的理解。...

    WebService的WSDL文件生成Java代码工具

    - 使用CXF的wsdl2java命令行工具,将WSDL文件转换为Java代码。命令格式如下: ``` cxf-codegen-plugin -wsdlLocation 文件路径&gt; -d &lt;生成代码的目标目录&gt; ``` - 生成的代码包括服务接口、消息bean和SOAP绑定类...

    JAVA调用WebService所需要的JAR

    1. **SOAP协议**:Java调用WebService通常采用SOAP(Simple Object Access Protocol)协议,这是一种基于XML的协议,用于交换结构化的和类型化的数据。为了处理SOAP消息,Java需要Apache Axis、CXF或JAX-WS等库的...

    InvokeWebService 动态访问WebService帮助类

    5. **结果处理**:返回Web服务调用的结果,可能是原始的XML数据,也可能是通过JAXB自动转换成的Java对象,这取决于服务的响应内容。 在实际应用中,InvokeWebService帮助类可能还包括日志记录、性能监控、安全控制...

    Java远程读取XML文件相关

    4. **JAXB (Java Architecture for XML Binding)**:用于将Java对象绑定到XML表示形式的技术,简化了XML文件的读写过程。 #### 二、Java远程读取XML文件 远程读取XML文件通常涉及网络通信。在Java中实现这一功能...

Global site tag (gtag.js) - Google Analytics