复杂xml格式报文和实体类之间的转化
pom.xml中引入如下依赖:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
<version>2.6.2</version>
</dependency>
要转化的xml如下:person.xml
<?xml version="1.0" encoding="UTF-8"?>
<person>
<username name="first-name">王哥</username>
<phone-number name="tel-number" type="private">111122211</phone-number>
<phone-number name="tel-number" type="public">22222222</phone-number>
<address key="working_location">北京-xxxx</address>
<sex>M</sex>
<weight>75kg</weight>
</person>
下面直接贴代码:
Person.java
package com.xml.demo;
import org.eclipse.persistence.oxm.annotations.XmlPath;
import java.util.List;
public class Person {
@XmlPath("node[@name='first-name']/text()")
private String firstName;
private String sex;
private String weight;
private Address address;
@XmlPath("phone-number[@name='tel-number']")
private List<PhoneNumber> phoneNumbers;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWeight() {
return weight;
}
public void setWeight(String weight) {
this.weight = weight;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public List<PhoneNumber> getPhoneNumbers() {
return phoneNumbers;
}
public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {
this.phoneNumbers = phoneNumbers;
}
}
Address.java
package com.xml.demo;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlValue;
public class Address {
private String key;
@XmlValue
private String text; //地址具体名称
@XmlAttribute(name="key")
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public Address(String key, String text) {
this.key = key;
this.text = text;
}
public Address() {
}
}
PhoneNumber.java
package com.xml.demo;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class PhoneNumber {
@XmlAttribute
private String type;
@XmlValue
private String number;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public PhoneNumber(String type, String number) {
this.type = type;
this.number = number;
}
public PhoneNumber() {
}
}
测试类:
package com.xml.demo;
import blog.predicate.Customer;
import org.eclipse.persistence.jaxb.JAXBContextFactory;
import org.eclipse.persistence.jaxb.xmlmodel.ObjectFactory;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
Person p=new Person();
p.setFirstName("王哥");
p.setSex("M");
p.setWeight("75kg");
Address addr=new Address("working_location","北京-xxxx");
p.setAddress(addr);
List<PhoneNumber> phoneNumbers=new ArrayList<PhoneNumber>();
PhoneNumber phoneNumber1=new PhoneNumber("private","111122211");
PhoneNumber phoneNumber2=new PhoneNumber("public","22222222");
phoneNumbers.add(phoneNumber1);
phoneNumbers.add(phoneNumber2);
p.setPhoneNumbers(phoneNumbers);
JAXBContext jc = JAXBContextFactory.createContext(new Class[]{Person.class, ObjectFactory.class},null);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(p, System.out);
Unmarshaller unmarshaller = jc.createUnmarshaller();
File xml = new File("src/main/resources/person.xml");
Person p1 = (Person) unmarshaller.unmarshal(xml);
System.out.println(p1.getAddress().getText());
}
}
复杂xml格式报文和实体类之间的转化的更多相关文章
- 接口中的xml报文和实体类的之间转换
需求:湖南保险行业意健险承保风险预警平台数据接口 平台提供HTTPServlet服务,接受保险公司的数据请求,并在处理后返回给保险公司相应的处理结果.数据接口格式为XML数据报文,在每次接口的交易中, ...
- xml格式报文的拼装,和解析成实体类
我们的微信支付,使用的是第三方的支付,某银行的微信支持渠道.所有的接口请求.应答都是xml格式报文,这样就需要用到xml格式报文的拼装和解析,这儿简单讲一下. 拼接xml格式报文. 从页面表单提交和配 ...
- xml转json和实体类的两种方式
本文为博主原创,未经允许不得转载: xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛, 在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法: ...
- (转)DATATABLE(DATASET)与实体类之间的互转.
转自:http://www.cnblogs.com/zzyyll2/archive/2010/07/20/1781649.html dataset和实体类 之间的转换 //dataset转实体类 代 ...
- c# XML和实体类之间相互转换(序列化和反序列化)[砖]
link: http://blog.okbase.net/haobao/archive/62.html by: 好饱 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlU ...
- C# XML和实体类之间相互转换(序列化和反序列化)
我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...
- XML和实体类之间相互转换(序列化和反序列化)
我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- java中的xml与实体类之间的映射
实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...
- XML之序列化C#实体类,DataTable,List
1. static void Main(string[] args) { #region 实体类 Request patientIn = new Request(); patientIn.System ...
随机推荐
- 18B20驱动小经验
在写命令时P14拉高在最后 在读命令时P14在拉低后拉高
- oracle 增加大字段项
--不同类型增加大字段项 alter table 表名 add 新增一个字段B clob; --将需要改成大字段的项内容copy到大字段中 update 表名 set 新增一个字段B=字段A; --将 ...
- JAVA循环的语法
一,有几种循环的语法 1while. while(循环条件){ 循环操作 } while(循环条件){ 循环操作 } 2.do-while do{ 循环操作 }while(循环条件); do{ 循环操 ...
- XSS漏洞学习笔记
XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...
- Page.Cache
https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.page.cache?view=netframework-4.8 Gets the ...
- 创建您的 ActiveReports Web端在线报表设计器
概述 ActiveReports Web端在线报表设计器已经正式上线!看到它这么帅气.实用,你是不是也想自己动手创建一个? 现在我们就来教您,如何创建一个简单的 ActiveReports Web端在 ...
- docker安装nginx实例
1.拉取nginx镜像: docker pull nginx 2.查看本地镜像文件: docker images 3.创建挂载目录: mkdir -p /docker_data/nginx/{con ...
- matlab 入门
---恢复内容开始--- 1.cast表示将元素转化成对应的ASCII值 如cast('hellothere','uint8')输出结果为104 101 108 108 111 116 104 101 ...
- ssh整合oracle数据源报错????
在SSH整合的时候,引入oracle的pom节点,但是报错,因为没有权限,要手动将Oracle.jar注册到本地仓库 保证你电脑有maven环境,测试 方式为 cmd---->mvn -vers ...
- oracle更改字符集为zhs16GBK
PDBalter pluggable database PDBANBOB open; alter session set container=pdbanbob; ALTER SYSTEM ENABLE ...