0

私の英語は少し下手なので、わからなくても躊躇しないでください。perlテンプレートツールキットモジュールに問題があります。これは、このモジュールを使用した最初の経験です。ファイルからxmlデータを読み取り、XML :: Simple(ForceArray)を使用して解析し、DATA::Dumperを使用して印刷しました。データの印刷は

$var1={

       'data'=>{
                  'employee'=>[
                            {
                           'name'=>'suraj',
                           'number'=>'f11a0478',
                           'adress'=>' badvel,kadapa,a.p,india',
                            },

                           {
                           'name'=>'misra',
                           'number'=>'047902',
                           'adress'=>' raipur,ananthapur,a.p,india',
                            }...........
                             ...........
                          ],          

    'company'=>{
              'name'=>'bosch',
              'location'=>'banglore',
              'domain'=>{
                     'java'=>{
                            'employee'=>[
                                     {
                                    'name'=>'suraj',

                                    'number'=>'f11a0478',

                                    'experience'=>{
                                              'years'=>'3',
                                              'projects'=>'4',

                                              }
                                           },
                                   {
                                    'name'=>'misra',

                                    'number'=>'047902',

                                    'experience'=>[
                                                 {
                                                  'years'=>'1',

                                                  'projects'=>'1',

                                                  },
                                                 {
                                             'years'=>'1',

                                             'projects'=>'1',

                                              }
                                             ]
                                           },   
                                          ]
                            }
                    }................
                    .................
             };

私はこのようなテンプレートツールキットプロセスを使用し、いくつかのファイルに印刷しました。私はこのようなコードを書きました

[% FOREACH comp IN company %]
[% comp.name %] 
[% comp.location%]
employeedata:
[% FOREACH employee IN comp.domain.java.employee %]
employee name: [% employee.name +%] numb [%+ employee.number %]
   [% FOREACH experience IN employee. experience %]
[% experience.years %]
[% experience.projects %]
 [% END %]
 [% END %]
[% END %]

上記のスクリプトから、会社の従業員、名前、番号、経験、年数、プロジェクトを印刷できます。しかし、私の問題は、この情報にも従業員の住所を追加する必要があることです。会社ノードとすべての会社のすべての情報を印刷しています。ただし、Addressはハッシュ内の他のキーにあります。従業員の名前と番号(同じ名前の従業員と同じ番号の従業員)を使用して、住所を検索し、従業員の詳細に住所を印刷する必要があります。この問題で私を助けてください。私は今何をすべきか、この問題を解決する方法。

4

1 に答える 1

1

あなたができること:

[% FOREACH de IN data.employee %]
  [% IF de.name == employee.name && de.number == employee.number %]
    [% de.address %]
    [% LAST %]
  [% END %]
[% END %]

ただし、TTで処理する前に、データ構造について何かを行うことをお勧めします。これはあまり効率的ではないためです。comp.domain.java.employeeとdata.employeeに同じ数の要素が含まれている場合、それは非常に簡単です。

編集:以下のコメントで私が意味したのは

[% FOREACH employee IN comp.domain.java.employee %]
  [% addresses = [] %]
  [% FOREACH de IN data.employee %]
    <!-- Name, experience etc. -->
    <!-- Then new address stuff: -->
    [% IF de.name == employee.name || de.number == employee.number %]
      [% addresses.push(de.address) %]
    [% END %]
  [% END %]
  [% addressStr = addresses.join(', '); addressStr.replace(', ([^,]+)$', ' or $1') %]
  [% addressStr %]
[% END %]

address1, address2 or address3それは?のようなアドレスを印刷していません

于 2011-11-04T13:49:26.297 に答える