微信---利用JAXB和EclipseLink MOXy实现 CDATA数据转换demo

概述:

最近在弄微信,大家都知道微信是CDATA数据转换,这个挺头疼的,在网上找的EclipseLink很好用。

这里采用maven工程

1、第一步引用jar包

<dependency>
		    <groupId>org.eclipse.persistence</groupId>
		    <artifactId>org.eclipse.persistence.moxy</artifactId>
		    <version>2.7.0-RC1</version>
		</dependency>


2、写一个普通java bean

import javax.xml.bind.annotation.XmlRootElement;

import org.eclipse.persistence.oxm.annotations.XmlCDATA;

@XmlRootElement(name="c")
public class Customer {

	private String bio;
	@XmlCDATA
	public String getBio() {
		return bio;
	}

	public void setBio(String bio) {
		this.bio = bio;
	}
	
	
}

注意注解 @XmlCDATA就是生成cdata结构的数据

3、添加一个属性文件(替换默认java的工厂类)

文件结构


名称:jaxb.properties

内容:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory


4、测试用例

import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;


public class Demo {

	public static void main(String[] args) throws Exception {
		JAXBContext jc = JAXBContext.newInstance(Customer.class);
		
		Unmarshaller u = jc.createUnmarshaller();
		String xml = "<c><bio><![CDATA[O(∩_∩)O哈哈哈~]]></bio></c>";
		Customer c = (Customer) u.unmarshal(new StringReader(xml));
	      System.out.println("Unmarshal: " + c.getBio());
	  
	      Marshaller m = jc.createMarshaller();
	      m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
	      m.setProperty(Marshaller.JAXB_FRAGMENT, true);
	     Customer cs = new Customer();
	     cs.setBio("122323232");
	      System.out.print("Marshal: ");
	      m.marshal(cs, System.out);
	}
}

5、日志


Unmarshal: O(∩_∩)O哈哈哈~
Marshal: <c>
   <bio><![CDATA[122323232]]></bio>
</c>

注意:这属性文件必须要添加,不然没有效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值