【问题标题】:ESQL XML Creation in IIBIIB 中的 ESQL XML 创建
【发布时间】:2017-05-30 21:50:15
【问题描述】:

有人可以帮助我在 IIB 中使用 ESQL 创建以下 xml 结构

输入:

<animal>
     <animaldomestic>dog<animaldomestic>
     <animalwild>cheetah<animalwild>
</animal>

输出:

<animals>
  <animal type="domestic">cow</animal>
  <animal type="wild">cheetah</animal>
</animals>

【问题讨论】:

  • 对不起史蒂文。我是一名新手 ESQL 开发人员。我在创建上述结构时很困惑。
  • 假设您正在尝试创建一个名为 Animals 的表格,其中包含 Lion 和 Cheetah 的条目,这很容易做到,但您需要这样做。尝试查看 ESQL 文档以创建数据库/表。 ibm.com/support/knowledgecenter/SSGU8G_11.70.0/com.ibm.sqls.doc/…
  • 感谢您的意见,史蒂文。但是,我正在使用 IIB 中间件,我需要在计算节点中使用 ESQL 将输入 xml 转换为上述 xml 格式。

标签: messagebroker ibm-integration-bus extended-sql


【解决方案1】:

@Egorka_nazarov 的解决方案是最好的。不过,可以进行一些改进:

    FOR refAnimals AS InputRoot.XMLNSC.animal.*[];
      CREATE LASTCHILD OF OutputRoot.XMLNSC.animals 
        AS refNewAnimal
        TYPE NameValue 
        NAME 'animal' 
        VALUE FIELDVALUE(refAnimals);

      DECLARE type CHARACTER SUBSTRING(FIELDNAME(refAnimals) AFTER 'animal');
      SET refNewAnimal.(XMLNSC.Attribute)type = type;
    END FOR;

上面的代码更短,并且不太可能包含错误(显然,一旦您练习了 REFERENCE 变量)。

【讨论】:

    【解决方案2】:

    如果你想要通用代码:

    DECLARE animal REFERENCE TO InputRoot.XMLNSC.animal.*[>];
    DECLARE type CHAR;
    DECLARE I INTEGER 1;
    WHILE LASTMOVE(animal) DO
        SET type = SUBSTRING(FIELDNAME(animal) AFTER 'animal');
        SET OutputRoot.XMLNSC.animals.animal[I] = FIELDVALUE(animal);
        SET OutputRoot.XMLNSC.animals.animal[I].(XMLNSC.Attribute)type = type;
        SET I = I + 1;
        SET type = '';
        MOVE animal NEXTSIBLING; 
    END WHILE;
    

    【讨论】:

      【解决方案3】:

      SET OuputRoot.XMLNSC.animals.(XMLNSC.Attribute)animal = '国内'; SET OutputRoot.XMLNSC.animals.animal = '牛';

      SET OuputRoot.XMLNSC.animals.(XMLNSC.Attribute)animal = 'wild'; SET OutputRoot.XMLNSC.animals.animal = '猎豹';

      【讨论】:

        【解决方案4】:

        我找到了解决方案。请找到以下代码:

        SET OutputRoot.XMLNSC.animals.animal[1].(XMLNSC.Attribute)type = 'domestic';
        SET OutputRoot.XMLNSC.animals.animal[1]VALUE = InputRoot.XMLNSC.animal.animaldomestic;
        SET OutputRoot.XMLNSC.animals.animal[2].(XMLNSC.Attribute)type = 'wild';
        SET OutputRoot.XMLNSC.animals.animal[2]VALUE = InputRoot.XMLNSC.animal.animalwild;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-09-29
          • 2023-04-08
          • 1970-01-01
          • 2017-07-10
          • 1970-01-01
          • 2019-02-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多