【发布时间】:2017-11-09 09:38:38
【问题描述】:
我正在尝试使用 Perl 创建一个文本文件。我有一个需要由我的 Perl 脚本读取的 XML 文件。在此之后它必须创建一个文本文件。我在网上搜索了很多,但找不到任何东西。也许你可以在这里支持我。
这是我的 Perl 脚本:
#!/usr/bin/perl
use XML::Parser;
my $file = 'data.xml';
my $count = '0';
my $parser = new XML::Parser(ErrorContext => 100000000000000000);
$parser->setHandlers(Char => \&char_handler, Default => \&default_handler);
$parser->parsefile($file);
print "Found $count comments.\n";
sub default_handler {
my ($p, $data) = @_;
if ($data =~ /^<!--/) {
my $line = $p->current_line;
$data =~ s/\n/\n\t/g;
print "$line:\t$data\n";
$count++;
}
}
这是我的 XML 文件:
<?xml version='1.0'?>
< employee>
<name>John Doe</name>
<age>43</age>
<sex>M</sex>
<department>Operations</department>
<city>New York</city>
<name>David Street</name>
<age>25</age>
<sex>M</sex>
<department>Sales</department>
<city>San Diego</city>
< /employee>
当我运行脚本时,我得到以下信息:
>perl print.pl
not well-formed (invalid token) at line 2, column 1, byte 23:
<?xml version='1.0'?>
< employee>
^
<name>John Doe</name>
<age>43</age>
<sex>M</sex>
<department>Operations</department>
<city>New York</city>
<name>David Street</name>
<age>25</age>
<sex>M</sex>
<department>Sales</department>
<city>San Diego</city>
< /employee>
at /opt/GSBperl/lib/site_perl/5.8.8/i86pc-solaris-64int/XML/Parser.pm line 187
这不是我需要的。我需要一个具有这种格式的文件。
John Doe;43;M;Operations
David Street;25;M;Sales
我不需要的字段。
【问题讨论】:
-
字段“城市”我不需要
-
您看到的是一条错误消息。它说您的输入文件不是有效的 XML。
-
如果您没有足够的知识甚至没有机会自己编写程序,那么 Stack Overflow 不是寻求帮助的地方。这不是免费的代码编写服务。通常的方法是聘请知道自己在做什么的人为您完成工作。没有其他职业可以让您尝试在网上乞讨免费工作。
-
无论如何,您都是从无效的 XML 数据开始的,所以没有人可以帮助您。
-
lib/site_perl/5.8.8- 帮自己一个忙,尝试使用不到 10 年的 Perl 版本!