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 %]

从上面的脚本中,我可以打印公司员工、姓名、编号、经验、年限、项目。但我的问题是我还需要在此信息中添加员工地址。我正在打印公司节点和所有公司的所有信息。但是地址位于散列中的某个其他键。通过使用员工姓名和号码(一些员工姓名相同,一些员工号码相同),我需要找到地址并在员工详细信息中打印地址。帮我解决这个问题。我现在该怎么办,如何解决这个问题。

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 回答