我是新来的,我需要帮助,我不是一个优秀的程序员,但我在网页(Java)的开发中更多。 malheuereusement我还没有找到这个领域的实习职位,但我发现在其他领域没有其他选择,我可以接受,不幸的是我的培训大师不是程序员,他是系统的主管,它甚至我让他发现了perl中的一些东西。进来我的问题: 我能够实现一个解析file-xml的perl脚本,但为此我必须去我的编辑器perl写下我所有文件的名字,不幸的是我有成千上万的文件,xml,我喜欢这段代码必须能够找到位于文件夹中的all-xml文件和以下性质解析器,我没有任何时间开始编写我的编辑器数千个文件的名称。那是我的问题。 如果我拥有4或6个文件,我已经在我的编辑器中编写了名称,我将立即收到结果
我可以用某种方式总结:
保存在PC上的文件夹中的1-(提取XML Perl脚本) 2- Perl-script搜索文件夹中的XML文件 3- perl-script进程(解析)fichiers_xml 4- perl-script返回解析文本文件的结果
这是Ipaserfür实现的代码,它运行良好
use strict;
use warnings;
use XML::Twig;
use File::Find;
my $file1 = shift or die 'No file1';
my @files = @ARGV or die 'No files';
my $FileResult = 'result.csv';
open( my $FhResult, '>', $FileResult )or die ("Unable to open file $FileResult\n$!");
my $twig1= XML::Twig->new(
twig_handlers => {
'Parameter' => sub {
my $attr_name = $_->{'att'}->{'name'} // 'fault';
print $FhResult $attr_name . ",";
},
},
);
print $FhResult( (split('_', $file1,2))[0] . ',' );
$twig1->parsefile($file1);
for my $file (@files) {
my $twig2 = XML::Twig->new(
twig_handlers => {
'Parameter' => sub {
my $attr_value = $_->{'att'}->{'value'} // 'fault';
print $FhResult $attr_value . ",";
},
},
);
print $FhResult ( split( '_', "\n$file", 2 ) )[0] . ',';
$twig2->parsefile($file);
}
close $FhResult;
答案 0 :(得分:2)
如果我正确理解您的问题,您需要一种方法来查找目录中的所有XML文件。
以这种方式:
chdir $the_directory_we_want_to_process;
foreach my $xml_file ( glob('*.xml') ) {
process_the_file($xml_file);
}
glob('*.xml')
函数执行shell模式匹配,以生成当前目录中以' .xml'
这是另一个:
opendir(DH, $the_directory_we_want_to_process)
while ( $file = readdir(DH) ) {
next unless /\.xml$/;
process_the_file($xml_file);
}
closedir(DH);