gpt4 book ai didi

xml - Websphere 消息代理 : Accessing XML elements in ESQL

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:58 24 4
gpt4 key购买 nike

Websphere Message Broker:文件输入文件输出示例。我有一个具有重复元素结构的 XML 文件。我如何访问和修改 ESQL 中特定元素的值。我写了以下代码..

CREATE PROCEDURE CopyEntireMessage() BEGIN
--SET OutputRoot = InputRoot;
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(OutputRoot.*[]);
WHILE I < J DO
SET OutputRoot = InputRoot;
SET OutputRoot.XMLNS.person.student[I].name = 'XYZ';
SET I = I + 1;
END WHILE;
END;

但是它不起作用。从输入文件夹中提取文件,但我在输出文件夹中看不到任何内容。但是如果我评论

SET OutputRoot.XMLNS.student[I].name = 'XYZ';

然后文件在输出文件夹中可用,因为它没有任何变化。

我的 XML 文件如下

<person>
<student>
<name>ABC</name>
<age>20</age>
<address>city1</address>
</student>
<student>
<name>PQR</name>
<age>20</age>
<address>city2</address>
</student>
</person>

谁能帮我解决这个问题?

最佳答案

这个计算模块应该做你需要的,在 linux 上的 9001 测试:

CREATE COMPUTE MODULE FileInputOutput_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
-- CALL CopyMessageHeaders();
CALL CopyEntireMessage();

FOR source AS OutputRoot.XMLNSC.person.student[] DO
SET source.name = 'XYZ';
END FOR;


RETURN TRUE;
END;

CREATE PROCEDURE CopyMessageHeaders() BEGIN
DECLARE I INTEGER 1;
DECLARE J INTEGER;
SET J = CARDINALITY(InputRoot.*[]);
WHILE I < J DO
SET OutputRoot.*[I] = InputRoot.*[I];
SET I = I + 1;
END WHILE;
END;

CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;

注意事项,首先,重新定义自动生成的过程不是好的做法,如果您需要重用设置消息中每个字段的功能,那么创建一个新过程来执行此操作是明智的。

XMLNS 也已弃用,因此请改用 XMLNSC,它具有更高的性能并具有与 XMLNS 相同的所有功能,后者仅保留用于支持遗留应用程序。

关于xml - Websphere 消息代理 : Accessing XML elements in ESQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24695996/

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