我正在尝试以以下格式(消息树)解析Web服务响应消息:
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())
但是我无法以这种方式或任何其他方式获取Document节点,它始终为null。
最佳答案
可能为时已晚,但是您使用的是错误的方式。
使用WMB和IIB时,应使用内置的XML支持-而不是javax.XML。*类库。因此,应该使用JAXB解组器,而不是
在输出消息根目录下创建XMLNSC树
将输入的DFDL消息树复制到输出XMLNSC消息树(一行)
...并且消息流将在需要时将其序列化(解组)为XML树-当它遇到输出节点时,或者当您调用outMessage.toBitstream()时。