将XML从Java计算节点传递到ESQL Compute节点IBM Message broker

时间:2015-06-06 20:36:03

标签: java xml ibm-integration-bus

我正在读取一个xml文件,我想更改一个在不同的父标签中出现多次的XML参数,即Ordernumber。然后我想将更新的XML从Java计算节点发送到ESQL计算节点。任何帮助将不胜感激。

已经读取了文件并且我已经选择了单个标签,而在我的xml架构中,有不同的父标签包含'Ordernumber',我必须为其更改值。

我的代码是 “/”

            synchronized (this) {

                 dom = db.parse(Constant.USER_DIR+ Constant.APP_ROOT_DIR +  
                        + Constant.APP_DIR + "/" 
                        + Constant.CONFIG_DIR+ "/" 
                        + Constant.FILE_NAME);

            }

            Element rootElement = dom.getDocumentElement();
            //Code = new Long[1];  
            NodeList nl = rootElement.getElementsByTagName("Ordernumber");
            if (nl != null && nl.getLength() > 0) {
                for (int i = 0; i < nl.getLength(); i++) {

                    // get the CallSystem element

                    Element el = (Element) nl.item(i);

    }       
            }

我也知道我将为Outmessage创建根元素,但我不知道如何将整个xml文件放入outmessage。请帮忙。

                message = new MbMessage();
                root = message.getRootElement();
                xmlRoot = root.createElementAsLastChild(MbXMLNSC.PARSER_NAME);

1 个答案:

答案 0 :(得分:0)

1)不要读取带代码的文件(同步块);相反,使用文件节点。如果希望通过从轮询目录中读取文件来启动消息流,请使用“文件输入”节点。如果要将文件读入消息流的中间,请使用“文件读取”节点。在任何一种情况下,将节点的输入消息解析选项卡上的消息域属性设置为XMLNSC,它将文件内容解析为XML。

2)将文件节点的Out终端连接到Java Compute节点(JCN)的In终端。

3)在JCN中,使用XPath选择名为“Ordernumber”的所有元素实例。为此,您的XPath语句可能会使用后代轴;见reference。有关如何开始使用产品API的示例,请参阅此link。您将在{install path} /docs/JavaAPI/index.html中找到适用于MbXPath的Javadoc。

4)您没有说明后续ESQL Compute节点中发生了什么。但请记住,您可能可以在之前的JCN中执行此操作,从而消除了ESQL Compute节点。

我认为这些指针应该引导你朝着正确的方向前进。