Smooks XML-XML преобразование с несколькими точками вставки - PullRequest
0 голосов
/ 21 января 2011

Я пытаюсь преобразовать xml из одного формата в другой, используя smooks.Исходный XML выглядит так, как показано ниже:

<page>
    <responsedata>
      <header>
          ...
          <ref_no>xyz</ref_no>
      </header>
      <detail>
          <acc_no>x</acc_no>
          <ac_ccy>y</ac_ccy>
          <avail_bal>z</avail_bal>
      </detail>
      <detail>
          ...
      </detail>
    </responsedata>
</page>

Я пытаюсь преобразовать вышеприведенное в что-то вроде этого:

<detail>
    <ref_no>xyz</ref_no>
    <accounts>
         <account>
            <Account_no>x</Account_no>
            <Curr>y</Curr>
            <Avail_Bal>z</Avail_Bal>
         </account>
         <account>
            ...
         </account>
    </accounts>
</detail>        

Для этого я использовал следующую конфигурацию smooks:

<ftl:freemarker applyOnElement="responsedata">
    <ftl:template><!--<?xml version="1.0" encoding="UTF-8" ?>
    <DETAIL>
      <Ref_No>????<Ref_No> //how to bring the ref_no here
      <Accounts>
        <?TEMPLATE-SPLIT-PI?>
      </Accounts> 
    </DETAIL>
    --></ftl:template>
</ftl:freemarker>


 <ftl:freemarker applyOnElement="detail">
    <ftl:template><!--
    <Account>
       <Account_no>${detail.acc_no}</Account_no>
       <Curr>${detail.ac_ccy}</Curr>
       <Avail_Bal>${detail.avail_bal}</Avail_Bal>
    </Account>
     --></ftl:template>
 </ftl:freemarker>

За исключением ссылочного номера, я могу преобразовать все остальное.Любые предложения о том, как этого добиться, будут высоко оценены.

Ответы [ 2 ]

0 голосов
/ 22 января 2013
<resource-config selector="header">
   <resource>org.milyn.javabean.BeanPopulator</resource>
   <param name="beanId">header</param>  
   <param name="beanClass">java.util.HashMap</param>
   <param name="bindings">
      <binding property="refNo" selector="header/ref_no" />
   </param>
</resource-config>

<resource-config selector="header">
   <resource type="ftl">
       <![CDATA[<detail>
       <ref-no>${header.refNo}</ref-no>
        ...
       </detail>]]>  
       </resource> 
</resource-config>
0 голосов
/ 27 января 2011

Не могли бы вы использовать javabean-функцию Smooks, чтобы связать это значение с Java-объектом (просто поместив в HashMap), а затем получить доступ к этому бину из шаблона Freemarker?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...