首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Integration :无法访问元素&分配默认命名空间

Integration :无法访问元素&分配默认命名空间
EN

Stack Overflow用户
提问于 2015-08-09 07:48:13
回答 1查看 1.2K关注 0票数 0

我花了三天的时间研究和探索在输入节点访问XML消息的根元素的不同方法,但是无法从这个操作中获得非空结果:

代码语言:javascript
复制
DECLARE RootElement CHARACTER FIELDNAME(InputRoot.XMLNSC.*[<]);

RootElement总是空的,但是当我这样做时(下面),消息就被正确地复制了。

代码语言:javascript
复制
SET OutputRoot = InputRoot;

问题是传入的消息没有声明任何名称空间,而在计算节点中,我试图分配它:

代码语言:javascript
复制
SET OutputRoot.(XMLNSC.NamespaceDecl)xmlns = orgs_crm;

其中,orgs_crm

代码语言:javascript
复制
DECLARE NS_CRM_MDO CONSTANT CHARACTER 'http://example.org/schema_crm';
DECLARE orgs_crm    NAMESPACE   NS_CRM_MDO;

输入信息是:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Message><MessageId>5348569534564534682</MessageId></Message>

产出应是:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Message xmlns="http://example.org/schema_crm" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <MessageId>5348569534564534682</MessageId>
</Message>

我很难过,关于IBM的Integration开发没有足够的信息。即使使用RedBook (这里),我也无法理解如何使事情正常工作。我会感谢你的帮助。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-08-10 05:24:00

我终于得到了这个问题的答案。在前面的计算节点中,我必须首先将传入的InputRoot.BLOB转换为XMLNSC,只有这样,我才能执行通常的XML转换。

代码语言:javascript
复制
DECLARE inCCSID INT InputProperties.CodedCharSetId; 
DECLARE inEncoding INT InputProperties.Encoding; 
DECLARE inBitStream BLOB ASBITSTREAM(InputRoot.BLOB, inEncoding, inCCSID); 
CREATE LASTCHILD OF OutputRoot DOMAIN('XMLNSC') PARSE(inBitStream, inEncoding, inCCSID,'BLOB', 'XMLNSC');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31902059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档