用Perl读取XML文件并写入文本文件
我试图用Perl创建一个文本文件。我有一个XML文件,需要由Perl脚本读取。在这之后,它必须创建一个文本文件。我在网上搜索了很多,但什么也没找到。也许你可以在这里支持我 这是我的Perl脚本:用Perl读取XML文件并写入文本文件,xml,perl,parsing,Xml,Perl,Parsing,我试图用Perl创建一个文本文件。我有一个XML文件,需要由Perl脚本读取。在这之后,它必须创建一个文本文件。我在网上搜索了很多,但什么也没找到。也许你可以在这里支持我 这是我的Perl脚本: #!/usr/bin/perl use XML::Parser; my $file = 'data.xml'; my $count = '0'; my $parser = new XML::Parser(ErrorContext => 100000000000000000); $parser
#!/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“格式不好”(正如错误消息所说) 问题是
不是有效的XML标记。XML元素名称中不能有空格-因此可能应该是
我不知道这个XML文件来自哪里,但它不是XML。您应该找到向您提供此文件的人,并要求他们在发送到之前确保其XML格式正确
(示例XML中还有另一个问题,
声明前第一行的空格。但是,考虑到您收到的错误消息,我认为这是您在此处发布问题时犯的错误。)
更新:这不会导致您当前的问题,但是如果您正在修复XML文件,您可能会要求他们修复多个员工的呈现方式。我希望看到这样的情况:
<?xml version='1.0'?>
<employees>
<employee>
<name>John Doe</name>
<age>43</age>
<sex>M</sex>
<department>Operations</department>
<city>New York</city>
</employee>
<employee>
<name>David Street</name>
<age>25</age>
<sex>M</sex>
<department>Sales</department>
<city>San Diego</city>
</employee>
</employees>
无名氏
43
M
操作
纽约
大卫街
25
M
销售额
圣地亚哥
看,我现在为每个人都有一个单独的
元素,它们都在一个新的
元素下
总之,您的输入文件似乎是由对XML一无所知的人创建的:-)字段“city”我不需要您看到的是一条错误消息。它说你的输入文件不是有效的XML。如果你知道的不够多,甚至连自己编写程序的机会都没有,那么堆栈溢出就不是寻求帮助的地方。这不是免费的代码编写服务。通常的方法是雇佣一个知道自己在做什么的人为你做这项工作。在任何职业中,你都不会试图在网上乞讨免费工作。无论如何,你是从无效的XML数据开始的,因此没有人能帮助你。
lib/site\u perl/5.8.8
-帮你自己一个忙,尝试使用一个不超过十年的perl版本!
>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 version='1.0'?>
<employees>
<employee>
<name>John Doe</name>
<age>43</age>
<sex>M</sex>
<department>Operations</department>
<city>New York</city>
</employee>
<employee>
<name>David Street</name>
<age>25</age>
<sex>M</sex>
<department>Sales</department>
<city>San Diego</city>
</employee>
</employees>