2015-07-23 3 views
0

В mule anypoint studio, когда я использую настраиваемый tranformer для создания jaxb-объекта, а затем маршаллируйте его в xml с помощью компонента JAXB для xml, я получаю полученный xml с тегом версии xml ниже.JAXB to xml добавляет xml-версию тега

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

Таким образом, полученный xml выглядит следующим образом.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<ExampleXML> 
</ExampleXML> 

Это обычно не проблема, но в этот момент я затем добавляю xml в мыльный конверт.

Результат будучи

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <ExampleXML> 
    </ExampleXML> 
    </soapenv:Body> 
</soapenv:Envelope> 

который является недопустимым запросом ..

Есть ли таким же образом установить JAXB в XML трансформатор, чтобы не добавлять этот заголовок?

+1

Как вы добавляете xml в мыльный конверт? Используете ли вы XSLT-трансформатор? – tortoise

+0

Я попытался использовать xslt transformer, но могу только вернуть значение xml. Как я могу выбрать и вернуть весь xml? – whiteElephant

ответ

2

Попробуйте трансформатор XSLT, который выглядит примерно так. Эта xsl: copy в основном копирует узлы, соответствующие выражению. Вот '.' относится к текущему узлу, и на самом деле корневой узел является текущим узлом здесь. Следовательно, весь XML внедряется внутри конверта SOAP.

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soapenv:Header/> 
    <soapenv:Body> 
    <xsl:copy-of select="." /> 
    </soapenv:Body> 
</soapenv:Envelope> 
</xsl:template> 
</xsl:stylesheet> 
0

Когда вы вызываете маршаллера, вы можете установить для свойства фрагмента значение true, которое не будет генерировать заголовок.

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); 
+0

Это будет работать, если я буду сортировать в java-коде, но я использую компонент jaxb для xml mule для сортировки jaxb-объекта. – whiteElephant