Преобразование DFDL в XML

Я пытаюсь проанализировать ответное сообщение веб-службы в следующем формате (дерево сообщений):

Message
    Properties
            Properties..[]
    DFDL
            ObjectIWantUnmarshalled
                    AllItsDataIwant[]

И разберите "ObjectIWantUnmarshalled". Однако эти данные в формате DFDL. В моем запросе я использую следующую строку для форматирования из XML в DFDL:

Document outDocument = outMessage.createDOMDocument(MbDFDL.PARSER_NAME);

Но, похоже, нет способа сделать обратное, из DFDL в XML. Я пытался:

Document outDocument = inMessage.createDOMDocument(MbXMLNSC.PARSER_NAME);

А также другие попытки просто разархивировать данные прямо из MbMessage:

jaxbContext_COBOL.createUnmarshaller().unmarshal(inMessage.getDOMDocument())

Но мне не удалось получить узел документа таким или каким-либо другим способом, он всегда равен нулю.


person JWiley    schedule 01.05.2014    source источник


Ответы (1)


Возможно, слишком поздно, но вы шли по этому пути неправильно.

При использовании WMB и IIB следует использовать встроенную поддержку XML, а не библиотеку классов javax.XML.*. Поэтому вместо использования демаршаллера JAXB вам следует

  • создать дерево XMLNSC в корне выходного сообщения
  • скопировать входное дерево сообщений DFDL в выходное дерево сообщений XMLNSC (одна строка)

... и поток сообщений будет сериализовать ( демаршалировать ) дерево как XML всякий раз, когда это необходимо - когда он встречает выходной узел или когда вы вызываете outMessage.toBitstream().

person kimbert    schedule 11.11.2015
comment
Я уверен, что это поможет кому-то еще! Спасибо за ответы. - person JWiley; 12.11.2015