IBM ESQL динамически обращается к полям

мне нужно получить доступ к полю, используя переменную,

  1. у меня есть переменная среды, содержащая путь к полю, которое мне нужно изменить, es. SET Environment.Variabili.Mappings.mapping[1].xpath='trades.trade[1].id';

  2. я хочу изменить значение этого поля, используя переменную среды es.SET OutputRoot.XML.MxML.{Environment.Variabili.Mappings.mapping[1].xpath}='test';

Но он не изменяет поле, а создает другое поле, подобное этому:

<MxML>
  ...
  ...
  ...
  <trades.trade[1].id>test</trades.trade[1].id>
<MxML>

Можно ли динамически обращаться к полю XML?

Тай. С уважением.


person Tarkalciol    schedule 18.12.2014    source источник


Ответы (1)


Вы случайно используете домен XML. Ваше заявление должно быть SET OutputRoot.XMLNSC.MxML...

Ваш оператор ESQL SET ведет себя в соответствии со спецификацией. Он создал новый тег с именем, взятым из значения Environment.Variabili.Mappings.mapping[1].xpath.

Если вы хотите динамически создавать подполя в выходном дереве, вам нужно будет - написать ESQL для токенизации значения Environment.Variabili.Mappings.mapping[1].xpath - использовать оператор CREATE для создания каждого поля в выходном дереве.

Прежде чем приступить к написанию этого кода, вы можете подумать об изменении дизайна. Было бы проще создать древовидную структуру в дереве среды и просто скопировать ее в OutputRoot.XMLNSC.

person kimbert    schedule 02.01.2015