0

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

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

我的代码是“/”

            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);
4

1 回答 1

0

1)不要用代码读取文件(你的同步块);而是使用文件节点。如果您希望消息流通过从轮询目录中读取文件开始,请使用文件输入节点。如果要将文件读入消息流的中间,请使用 File Read 节点。在任何一种情况下,将节点的Input Message Parsing选项卡上的Message 域属性设置为 XMLNSC,这会将文件内容解析为 XML。

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

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

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

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

于 2015-06-18T16:20:59.977 回答