- 论坛徽章:
- 0
|
xml文档中有两所学校,我想循环出第一所学校里的学生($school_num =1),1ban里有3个人,2ban里有两个人,3ban里有两个人,但我现在的循环结果是:1ban里有3个人,2ban里有5个人,3ban里有7个人,请教各位我的问题出在哪儿?
#!/bin/perl
use strict;
use XML::Simple qw(XMLin);
#use YAML qw(Dump);
my @lines = <DATA>;
my $text = join '', @lines;
my $school_num =1;
my $xml_data = XMLin( $text, ForceArray => 1 );
my ( $output, $reoutput, $student_text);
my $wen = "Welcome to Beijing sizhong!";
my $student_list = $xml_data->{school}[ $school_num - 1 ]->{student_list};
for my $student(@$student_list ){
my $grade_info = $student->{grade_name}->[0];
for my $student_info( @{$student->{student}} ){
my $name = $student_info->{name}->[0];
my $age = $student_info->{age}->[0];
my $sex = $student_info->{sex}->[0];
$student_text .= "$name($sex) is $age years old.\n";
}
$output= <<END;
Hello!
We are in $grade_info.
$student_text$wen
Thank you!
END
$reoutput .=$output;
}
print $reoutput;
__DATA__
<?xml version="1.0" encoding="GBK"?>
<function funcname="3grades" mode="predefined">
<task_name>2013815403777</task_name>
<school>
<school_name>Beijing sizhong</school_name>
<student_list>
<grade_name>1 ban</grade_name>
<student>
<name>Wang hongguang</name>
<age>18</age>
<sex>male</sex>
</student>
<student>
<name>Song yujia</name>
<age>19</age>
<sex>female</sex>
</student>
<student>
<name>Ma chunxiao</name>
<age>20</age>
<sex>male</sex>
</student>
</student_list>
<student_list>
<grade_name>2 ban</grade_name>
<student>
<name>Sun ying</name>
<age>17</age>
<sex>female</sex>
</student>
<student>
<name>Wang fei</name>
<age>19</age>
<sex>male</sex>
</student>
</student_list>
<student_list>
<grade_name>3 ban</grade_name>
<student>
<name>Gao qian</name>
<age>19</age>
<sex>female</sex>
</student>
<student>
<name>Shang caihong</name>
<age>18</age>
<sex>female</sex>
</student>
</student_list>
</school>
<school>
<school_name>Huanggang yizhong</school_name>
<student_list>
<grade_name>4 ban</grade_name>
<student>
<name>Wang fuji</name>
<age>21</age>
<sex>male</sex>
</student>
<student>
<name>Cheng lifang</name>
<age>20</age>
<sex>female</sex>
</student>
</student_list>
</school>
</function> |
|