转换 XML 消息中的数据

您通常需要将数据从一种格式转换成另一种格式。例如,在一条消息中,通过名称可以知道某项的类型,而在另一条消息中,通过号码可以知道某项。例如:

类型名           类型代码

Confectionary      2000
Newspapers 3000
Hardware           4000

请参阅以下输入消息:

<Data>
  <Items>
    <Item>
      <Cat>1000</Cat>
      <Description>Milk Chocolate Bar</Description>
      <Type>Confectionary</Type>
    </Item>
    <Item>
      <Cat>1001</Cat>
      <Description>Daily Newspaper</Description>
      <Type>NewsPapers</Type>
    </Item>
    <Item>
      <Cat>1002</Cat>
      <Description>Kitchen Sink</Description>
      <Type>Hardware</Type>
    </Item>
  </Items>
  <TranslateTable>
    <Translate>
      <Name>Confectionary</Name>
      <Number>2000</Number>
    </Translate>
    <Translate>
      <Name>NewsPapers</Name>
      <Number>3000</Number>
    </Translate>
    <Translate>
      <Name>Hardware</Name>
      <Number>4000</Number>
    </Translate>
  </TranslateTable>
</Data>

该消息有两部分:第一部分是项的列表,其中每项有一个编目号和类型;第二部分是描述的类型名称和数字类型代码之间的转换表。如果在下列转换中包括 Compute 节点:

SET OutputRoot.XML.Result.Items.Item[] = 
      (SELECT M.Cat, M.Description, T.Number As Type
          FROM 
              InputRoot.XML.Data.Items.Item[]               As M,
              InputRoot.XML.Data.TranslateTable.Translate[] As T
          WHERE M.Type = T.Name
   );

生成下列输出消息:

 <Result>
  <Items>
    <Item>
      <Cat>1000</Cat>
      <Description>Milk Chocolate Bar</Description>
      <Type>2000</Type>
    </Item>
    <Item>
      <Cat>1001</Cat>
      <Description>Daily Newspaper</Description>
      <Type>3000</Type>
    </Item>
    <Item>
      <Cat>1002</Cat>
      <Description>Kitchen Sink</Description>
      <Type>4000</Type>
    </Item>
  </Items>
</Result>

在结果中,每个类型名已被转换成它相应的代码。在该示例中,虽然并不要求,但是数据和转换表都在同一条消息树中。 例如,转换表可以在数据库中编码,或可以已由前一个 Compute 节点在本地环境中设置。

相关概念
消息流概述
ESQL 概述
消息建模
相关任务
设计消息流
定义消息流内容
管理 ESQL 文件
相关参考
Compute 节点
Database 节点
Filter 节点
ESQL 引用
SELECT 函数
SET 语句
声明 | 商标 | 下载 | 书库 | 支持 | 反馈
Copyright IBM Corporation 1999, 2006 最后一次更新时间:2006/08/14
ak05790_