我使用jaxb2marshaller将少量元素用CDATA封送到XML时遇到了大麻烦.我已经完成了以下解决方案:
还有更多,但找不到合适的解决方案.他们要么告诉切换到旧的JAXB实现,要么使用MOXY.但是,这不是我的要求.我使用OXM库在下面实现了两个类,并希望生成一个XML,其中很少有元素需要附加CDATA.
import java.util.HashMap;
import java.util.Map;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.jaxb.Jaxb2Marshaller;
@Configuration
public class AppConfig {
@Bean
public Processor getHandler(){
Processor handler= new Processor();
handler.setMarshaller(getCastorMarshaller());
handler.setUnmarshaller(getCastorMarshaller());
return handler;
}
@Bean
public Jaxb2Marshaller getCastorMarshaller() {
Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setPackagesToScan("com.pom.dom.whatever.model");
Map<String,Object> map = new HashMap<String,Object>();
map.put("jaxb.formatted.output", true);
jaxb2Marshaller.setMarshallerProperties(map);
return jaxb2Marshaller;
}
}
Run Code Online (Sandbox Code Playgroud)
和
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.oxm.Marshaller;
import org.springframework.oxm.Unmarshaller;
public class Processor {
private Marshaller marshaller;
private Unmarshaller unmarshalling; …Run Code Online (Sandbox Code Playgroud)