//使用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);
}
}
相关推荐
要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素对应。JAXB通过注解这些字段来完成映射,如`@XmlElement`、`@XmlAttribute`等。以下是一个简单的例子: ```java import javax.xml.bind....
前段时间找了好久xml与object之间的转换都没找到!最近在学习WebService,讲到JAXB!没听说过!看了才知道jdk中自带了这个功能,什么这个框架那个框架都用了!原来就在眼前你也不知道!我这儿有视频,有需要请留言!...
Java中的JAXB(Java Architecture for XML Binding)是一个用于在Java对象和XML之间进行绑定的工具,使得我们可以方便地在XML文档和Java对象之间进行转换。它简化了Web服务的开发,尤其是在处理XML数据时。本篇文章...
Java中,可以使用DOM、SAX或JAXB库来处理XML;在.NET环境中,有XmlDocument、XmlNode等类来处理XML。 5. **调用Web Service**:完成XML拼接后,客户端需要通过HTTP(POST请求)将XML发送到Web Service的URL。这通常...
- **JAXB反序列化**:使用JAXBContext的Unmarshaller对象,可以直接将XML文件或输入流转换为JavaBean实例。 - **使用Apache Commons Betwixt**:与转换过程类似,Betwixt提供了从XML到JavaBean的反向映射功能。 ...
例如,如果输入参数是`MyObject`,CXF会利用JAXB将其从XML字符串转换为Java对象。 - **反序列化**:同样,服务方法返回的对象也会被CXF转换为XML,然后发送回客户端。 5. **JAXB的使用** - **注解Java类**:使用`...
它基于SOAP(Simple Object Access Protocol)协议,使用XML(Extensible Markup Language)作为数据交换格式。 2. **SOAP**:SOAP是一种轻量级的、简单的、基于XML的消息协议,用于在分布式环境中交换结构化和类型...
在提供的标签"源码 工具"中,源码可能是指实现上述步骤的Java代码,而工具可能指的是如`wsimport`这样的工具,或者可能涉及到处理XML的库,如JAXB(Java Architecture for XML Binding)或DOM(Document Object ...
这个过程称为XML序列化,它将对象的状态转换成可以在网络上传输的XML字符串。在Java中,可以使用JAXB(Java Architecture for XML Binding)来实现;在.NET中,有XmlSerializer类用于此目的。 2. **复杂数据类型...
同时,JAXB(Java Architecture for XML Binding)是Java中处理XML和Java对象之间转换的标准接口。下面将详细介绍这些知识点。 首先,**JAX-WS** 是一种用于构建SOAP(Simple Object Access Protocol)Web服务的...
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中实现Web Service通常涉及到一系列的库文件,也就是jar文件,这些文件包含了处理XML、SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和其他相关协议所需的类和方法。本资源包中的"java WebService全部...
7. **jaxb-api.jar**,**jaxb-impl.jar** 和 **jaxb-core.jar**:Java绑定框架(JAXB),用于XML和Java对象之间的转换。 8. **xml-apis.jar** 和 **xercesImpl.jar**:XML解析相关的库,如Xerces,用于处理XML文档...
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,用于...
在压缩包子文件`AntWebService`中,可能包含了一个示例`build.xml`文件,一些源代码,以及可能的配置文件,如`pom.xml`(Maven的项目对象模型)。读者可以通过解压并研究这些文件来加深对Ant部署Web Service的理解。...
- 使用CXF的wsdl2java命令行工具,将WSDL文件转换为Java代码。命令格式如下: ``` cxf-codegen-plugin -wsdlLocation 文件路径> -d <生成代码的目标目录> ``` - 生成的代码包括服务接口、消息bean和SOAP绑定类...
1. **SOAP协议**:Java调用WebService通常采用SOAP(Simple Object Access Protocol)协议,这是一种基于XML的协议,用于交换结构化的和类型化的数据。为了处理SOAP消息,Java需要Apache Axis、CXF或JAX-WS等库的...
5. **结果处理**:返回Web服务调用的结果,可能是原始的XML数据,也可能是通过JAXB自动转换成的Java对象,这取决于服务的响应内容。 在实际应用中,InvokeWebService帮助类可能还包括日志记录、性能监控、安全控制...
4. **JAXB (Java Architecture for XML Binding)**:用于将Java对象绑定到XML表示形式的技术,简化了XML文件的读写过程。 #### 二、Java远程读取XML文件 远程读取XML文件通常涉及网络通信。在Java中实现这一功能...