我正在读取一个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);
答案 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节点。
我认为这些指针应该引导你朝着正确的方向前进。