use XML::Simple;
my $hashref = {
Group => {
ID => "U",
TYPE => "ROOT",
SchoolRef => [ { ID => "SCHOOL01" }, { ID => "SCHOOL02" }, { ID => "SCHOOL03" } ],
},
};
$xml = XMLout($hashref, RootName => undef);
print $xml;
结果输出的是:
<Group ID="U" TYPE="ROOT">
<SchoolRef ID="SCHOOL01" />
<SchoolRef ID="SCHOOL02" />
<SchoolRef ID="SCHOOL03" />
</Group>
你可以将 file1.csv 的内容当作一棵树,然后写代码构造上面例子中的 hashref 就好了。
2011/5/18 许高飞 <flyhighxu@gmail.com>
大家好!
遇到一个头疼的问题,特来请教大家。
file1.txt表示一个大学U的院系班级层次结构,U下面有SCHOOL01等院,院下面有系,系下面是班级(也有一些班级的上一级就直接是院);
file2.txt是学生的学号、姓名、班级、成绩。
需要从这两个文件读取信息,并输出成XML文件。
file1.csv:
ID,PARENTID
U,ROOT
SCHOOL01,U
SCHOOL02,U
SCHOOL03,U
DEPT01,SCHOOL01
CLASS01,DEPT01
CLASS02,DEPT01
CLASS03,DEPT01
DEPT02,SCHOOL02,
CLASS04,DEPT02
DEPT03,SCHOOL02
CLASS05,DEPT03
DEPT04,SCHOOL02
CLASS06,DEPT04
CLASS07,SCHOOL03
……
file2.csv:
ID,NAME,CLASS,GPA
pb001,Mike,CLASS01,3.70
pb002,Jim,CLASS01,3.92
pb003,Lisa,CLASS02,3.88
pb004,Look,CLASS03,4.05
……
file1.txt表示一个大学U的院系班级层次结构,U下面有SCHOOL01等院,院下面有系,系下面是班级(也有一些班级的上一级就直接是院);
file2.txt是学生的学号、姓名、班级、成绩。
需要从这两个文件读取信息,并输出成类似下面这样的XML文件格式:
<Group ID="U" TYPE="ROOT">
<SchoolRef ID="SCHOOL01"/>
<SchoolRef ID="SCHOOL02"/>
<SchoolRef ID="SCHOOL03"/>
……
</Group>
<Group ID="SCHOOL01" TYPE="SCHOOL">
<DeptRef ID="DEPT01"/>
</Group>
<Group ID="DEPT01" TYPE="DEPT">
<ClassRef ID="CLASS01"/>
</Group>
<Group ID="SCHOOL03" TYPE="SCHOOL">
<ClassRef ID="CLASS07"/>
</Group>
<Group ID="CLASS01" TYPE="CLASS">
<student ID="pb001" NAME="Mike" GPA="3.70"/>
<student ID="pb002" NAME="Jim" GPA="3.92"/>
</Group>
<Group ID="CLASS02" TYPE="CLASS">
<student ID="pb003" NAME="Lisa" GPA="3.88"/>
</Group>
<Group ID="CLASS03" TYPE="CLASS">
<student ID="pb004" NAME="Look" GPA="4.05"/>
</Group>
……
对XML处理不熟悉,看了一下XML::Simple的用法,看得头大还是没想明白我这个问题要怎么处理?故来请教一下大家,先谢谢了。
--
您收到此邮件是因为您订阅了 Google 网上论坛的“PerlChina Mongers 讨论组”论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com。
要取消订阅此网上论坛,请发送电子邮件至 perlchina+unsubscribe@googlegroups.com。
若有更多问题,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问此网上论坛。
没有评论:
发表评论