gpt4 book ai didi

java - IIB - 从聚合消息中获取 DOM 节点

转载 作者:行者123 更新时间:2023-11-30 08:39:37 26 4
gpt4 key购买 nike

我目前正在使用 IBM Integration Bus v9,我正在尝试从聚合消息中获取 DOM 节点 (org.w3c.dom.Node) 以将其解码为 Java 对象。

在我的流程的第一个版本中,我只同步调用一个 Web 服务,并且从 Java 计算节点,我直接从 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();

我的问题是 getDomNode 总是返回 null,尽管 docGenBefaXML 指向消息的 XMLNSC 部分。我尝试对树结构的各种元素调用 getDomNode 方法,但它始终返回 null。

描述了聚合消息的结构here .

有没有人知道如何解决这个问题?

最佳答案

感谢这两条评论,但我必须在结构上更深入一步(深入到消息正文内容)并且它起作用了。但令人惊讶的是,当我试图在调试器中显示节点对象时,它也显示为 null。

在这种情况下,如果有人必须这样做,这是我的代码:

MbMessage inMessage = inAssembly.getMessage();
MbElement comIbmAggregateReplyBody = inMessage.getRootElement().getFirstElementByPath("/ComIbmAggregateReplyBody");
MbElement docGenBefa = comIbmAggregateReplyBody.getFirstElementByPath("/ComIbmAggregateReplyBody/DocGenBefa");
MbElement docGenBefaXML = docGenBefa.getLastChild();
MbElement docGenBefbDocData = docGenBefaXML.getLastChild();
Node docGenBefaNode = docGenBefbDocData.getDOMNode();
JAXBElement<BefpDocData> inMsgJavaObj = jaxbContext.createUnmarshaller().unmarshal(docGenBefaNode, BefpDocData.class);
BefpDocData data = inMsgJavaObj.getValue();

关于java - IIB - 从聚合消息中获取 DOM 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36063062/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com