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

来源:互联网 发布:java查询oracle数据库 编辑:程序博客网 时间:2024/06/05 21:18

概述:

最近在弄微信,大家都知道微信是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;@XmlCDATApublic 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>

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

原创粉丝点击