如何使用perl生成新的xml文件

时间:2011-11-15 17:11:17

标签: xml perl xsd

我正在使用perl脚本生成新的xml文件,但我遇到了小问题,我写了这样的脚本

 #!/usr/bin/perl
 use warnings; 
  use strict;
open my $file, '>>', 'data.xml' or die "Can't open file: $!";
 print $file (<<EOF);
<?xml version="1.0" encoding="UTF-8"?>
<Detailsofuniversitys xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <Identification>
  <Ind>03.20.00</Ind>
</Identification>
<MetaData>
<History>
 <Entry>
  <Date>2010-10-19</Date>
<Note>IND Created</Note>
</Entry>
</History>
 <Status>P</Status>
 <StoringAndErasing>Not Defined</StoringAndErasing>
 <StoringAndErasing>Not Defined</StoringAndErasing>
 </MetaData>
 <university>
 <name>svu</name>
 <location>ravru</location>
<branch>
<electronics>
 <student name="xxx" number="12">
 <semester number="1"subjects="7" rank="2"/>
 </student>
 <student name="xxx" number="15">
 <semester number="1" subjects="7" rank="10"/>
 <semester number="2" subjects="4" rank="1"/>
  </student>
   <student name="xxx" number="16">
   <semester number="1"subjects="7" rank="2"/>
  <semester number="2"subjects="4" rank="2"/>
   </student>
</electronics>
  </branch>
</university>
<university>
  <name>sku</name>
    <location>ANTP</location>
<branch>
 <electronics>
   <student name="xxx" number="12">
 <semester number="3"subjects="6" rank="20"/>
 </student>
   <student name="xxx" number="16">
   <semester number="1"subjects="9" rank="12"/>
  <semester number="2"subjects="4" rank="2"/>
   </student>
    </section>
</electronics>
 </branch>
</university>
 EOF

但是在运行这个脚本之后它没有给出任何错误,当我试图打开那个xml文件时它会生成xml文件

 The XML page cannot be displayed 
  Cannot view XML input using XSL style sheet. Please correct the error and then click   
  the Refresh button, or try again later. 


   The following tags were not closed: gpx, gpx, detailsofuniversitys. Error processing 
     resource 'file:///C:/files/star/data...

我不知道这是什么错误,怎么打开。 perl脚本中是否有任何错误。另外如何使用perl生成新的xml文件。(xml数据看起来像这样),有没有选项。

2 个答案:

答案 0 :(得分:1)

考虑使用模块编写XML,请参阅How can I create XML from Perl?

答案 1 :(得分:0)

我刚刚运行了脚本,它不能正常工作。您的脚本试图理解您将其作为字符串文字提供的XML,因为您的print语句正在将"<<EOF"写入文件。通过改变

print $file (<<EOF);

print $file <<EOF

和来自

的EOF线
  EOF

EOF
;

您将获得一个将XML写入文件的脚本。

相关问题