Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 管道分隔文本到xml的转换_Perl_Shell - Fatal编程技术网

Perl 管道分隔文本到xml的转换

Perl 管道分隔文本到xml的转换,perl,shell,Perl,Shell,我有一个文本文件需要转换成xml。文本的第一行包含标题,标题将作为xml标记,其他每一行将作为xml标记的值。输入示例(ABC.txt): 这将转换为Output.xml: <Record> <ID>12</ID> <Name>Sam</Name> <Subject>PHY,MATH</Subject> <Marks>60</Marks> </Record> &

我有一个文本文件需要转换成xml。文本的第一行包含标题,标题将作为xml标记,其他每一行将作为xml标记的值。输入示例(
ABC.txt
):

这将转换为
Output.xml

<Record>
  <ID>12</ID>
  <Name>Sam</Name>
  <Subject>PHY,MATH</Subject>
  <Marks>60</Marks>
</Record>
<Record>
  <ID>13</ID>
  <Name>Gan</Name>
  <Subject>CHY</Subject>
  <Marks>70</Marks>
</Record>
<Record>
  <ID>25</ID>
  <Name>Rane</Name>
  <Subject>PHY</Subject>
  <Marks>78</Marks>
</Record>

12
山姆
菲,数学
60
13
赣
糜
70
25
拉内
物理层
78
是否有任何模块可以实现与XML::CSV相同的功能

谢谢


人在这里会工作得很好;创建数据的hashmap,将其输入XML::Simple,然后调用XMLout。你要做的唯一真正的工作就是把你的行整理成hashmap。。。在“|”上拆分以获取字段,您将在大部分时间内完成此操作。

在这里可以很好地工作;创建数据的hashmap,将其输入XML::Simple,然后调用XMLout。你要做的唯一真正的工作就是把你的行整理成hashmap。。。在“|”上拆分以获取字段,您就可以完成大部分操作。

您可以设置一个临时文件来保存CSV内容,并将该文件馈送到
XML::CSV

 #!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;

open my $fh, '<', "abc.txt" or die "can't open input";
my @in_content = <$fh>;
close $fh;

my @tmp;
open my $out, '>', "temp.txt" or die "can't open tempfile";
foreach my $in(@in_content){
  print {$out} join(';', split(/\|/,$in));
}

close $out;

# now, you can use temp.txt as input for XML::CSV
#/usr/bin/perl-w
严格使用;
使用警告;
使用数据::转储程序;

打开我的$fh,“您可以设置一个临时文件来保存CSV内容,并将该文件馈送到
XML::CSV

 #!/usr/bin/perl -w
use strict;
use warnings;
use Data::Dumper;

open my $fh, '<', "abc.txt" or die "can't open input";
my @in_content = <$fh>;
close $fh;

my @tmp;
open my $out, '>', "temp.txt" or die "can't open tempfile";
foreach my $in(@in_content){
  print {$out} join(';', split(/\|/,$in));
}

close $out;

# now, you can use temp.txt as input for XML::CSV
#/usr/bin/perl-w
严格使用;
使用警告;
使用数据::转储程序;
打开我的$fh,“在中读取ABC.txt(设置适当的分隔符),将其转换为hasref并使用读取ABC.txt(设置适当的分隔符)写出,将其转换为hasref并使用