2
我目前正在使用IBM Integration Bus v9,並試圖從聚合消息中獲取DOM節點(org.w3c.dom.Node)以將其解組爲Java對象。IIB - 從彙總消息中獲取DOM節點
在我的流程的第一個版本,我是同步調用只有一個Web服務,而且從Java Compute節點,我是直接從MbMessage得到DOM文檔,並解組通過以下方式(source):
MbMessage inMessage = inAssembly.getMessage();
JAXBElement<BefpDocData> inMsgJavaObj = jaxbContext.createUnmarshaller().unmarshal(inMessage.getDOMDocument(), BefpDocData.class);
BefpDocData data = inMsgJavaObj.getValue();
我的流的第二個版本現在異步調用兩個Web服務並將它們與AggregateReply節點進行聚合。在這種情況下,我想是這樣的:
MbMessage inMessage = inAssembly.getMessage();
MbElement comIbmAggregateReplyBody = inMessage.getRootElement().getFirstElementByPath("/ComIbmAggregateReplyBody");
MbElement docGenBefa = comIbmAggregateReplyBody.getFirstElementByPath("/ComIbmAggregateReplyBody/DocGenBefa");
MbElement docGenBefaXML = docGenBefa.getLastChild();
Node docGenBefaNode = docGenBefaXML.getDOMNode();
JAXBElement<BefpDocData> inMsgJavaObj = jaxbContext.createUnmarshaller().unmarshal(docGenBefaNode, BefpDocData.class);
BefpDocData data = inMsgJavaObj.getValue();
我的問題IST的getDomNode總是儘管返回null,關於該消息的XMLNSC部分docGenBefaXML點。我試圖在樹結構的各種元素上調用getDomNode方法,它總是返回null。
聚合消息的結構被描述爲here。
有沒有人有任何想法如何解決這個問題?
不知道。一個理論(它只是一個理論)是,getDOMNode()函數不適用於聚合消息。可能值得檢查getDOMNode()的文檔。如果什麼都沒有出現,請打開PMR並詢問IBM。 – kimbert
您是否嘗試導航到DOM中的回覆根元素?這可能會起作用。 –