在编组期间从XML中删除prolog

时间:2013-05-30 17:37:24

标签: java xml jaxb marshalling mule

我正在使用Mule XML模块jaxb-object-to-xml-transformer将我的对象转换为XML。然后使用模板将此XML嵌入到另一个XML中。

但问题是XML转换器的对象是使用prolog提供XML输出:

 <?xml version="1.0" encoding="UTF-8"?>

我没有这个需要XML。这样它就可以毫无问题地嵌入到另一个模板中。

    <flow name="main.flow">
    ....
    ....
    <mule-xml:jaxb-object-to-xml-transformer name="obj2xml" jaxbContext-ref="myJaxbContext"  returnClass="java.lang.String" />
    <custom-transformer ..... >
    ....
    ....
</flow>

在普通的JAXB中,有一种方法可以做到这一点。但在Mule XML模块中,我找不到任何属性来执行此操作。请告知是否有任何财产可以实现此行为。

1 个答案:

答案 0 :(得分:2)

文档表明您可以拦截JAXB转换(请参阅:http://www.mulesoft.org/documentation/display/current/JAXB+Bindings)。以下示例取自该文档。

@Transformer(sourceTypes = {String.class, InputStream.class})
public Person toPerson(Document doc, JAXBContext context) throws JAXBException
{
    return (Person) context.createUnmarshaller().unmarshal(doc);
}

假设您可以为编组做一个相应的事情,那么您就可以设置必要的JAXB属性。

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);