arc*_*hik 1 java xml xsd jaxb xjc
我有两个XML文件file1.xml
和file2.xml
.我也有每个文件的模式,file1.xsd
并file2.xsd
尊重.
我xjc
用来创建基于file1.xsd
(称为model(1))的java类,并基于file2.xsd
(称为model(2))创建类.
我使用model(1)来解析文件JAXB
库中的file1.xml .我想将此数据从模型(1)转换为模型(2),然后将转换后的数据封送到file2.xml
是否可以将数据从模型(1)转换为模型(2)?我可以合并ObjectFactories
吗?我该怎么做?
鉴于您的用例,没有办法自动从一个XML模式生成的JAXB(JSR-222)模型转换为另一个XML模式生成的另一个JAXB模型.有几个选择:
选项#1 - 对象到对象的转换
您可以以编程方式在对象模型之间移动数据.还有一些映射库可以使这个过程更容易(http://dozer.sourceforge.net/).
选项#2 - XSLT
XSLT是基于一组规则将一个XML文档转换为另一个XML文档的标准.随着使用JAXBSource
和JAXBResult
您甚至可以使用XSLT Java的机型.
TransformerFactory tf = TransformerFactory.newInstance();
StreamSource xslt = new StreamSource(new FileInputStream("my-xslt.xml"));
Transformer t = tf.newTransformer(xslt);
JAXBContext jc = JAXBContext.newInstance(MyClass.class);
JAXBSource source = new JAXBSource(jaxbContext1, foo);
JAXBResult result = new JAXBResult(jaxbContext2);
t.transform(source, result);
Bar bar = (Bar) result.getResult();
Run Code Online (Sandbox Code Playgroud)
选项#3 - EclipseLink JAXB(MOXy)的外部映射文件
我是MOXy的主管,我们提供了一个外部映射文件,允许您将对象模型映射到多个XML表示.请参阅以下链接以获取示例:
归档时间: |
|
查看次数: |
1792 次 |
最近记录: |