Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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 如何根据过滤文件中配置的要求将HTML文件的属性存储在XML输出文件中?_Perl_File Io - Fatal编程技术网

Perl 如何根据过滤文件中配置的要求将HTML文件的属性存储在XML输出文件中?

Perl 如何根据过滤文件中配置的要求将HTML文件的属性存储在XML输出文件中?,perl,file-io,Perl,File Io,我想写一个Perl脚本,它看起来很简单,但不知怎么的,我被它迷住了 我有一个HTML文件和一个filter.txt文件 HTML文件的内容如下 <tr><td>DATA_START</td><td align="center">77777</td><td align="center">0</td><td align="center">0</td></tr>..... DATA

我想写一个Perl脚本,它看起来很简单,但不知怎么的,我被它迷住了

我有一个HTML文件和一个
filter.txt
文件

HTML文件的内容如下

<tr><td>DATA_START</td><td align="center">77777</td><td align="center">0</td><td align="center">0</td></tr>.....
DATA\u start77700。。。。。
我想搜索文件
filter.txt
的内容。如果存在该内容,则获取其属性A和B。在本例中,如果
DATA\u start
filter.txt
的一部分,并且它在HTML文件中,则A为7777,B为0


我想把这个结果放在一个XML文件中。

打开filter.txt并将slurp HTML文件转换为标量。然后grep该模式的html,并使用一个简单的regexp解析该行

注意,这只适用于这种HTML结构,而不是坚如磐石的解决方案。使用Marpa实现更稳健的方法

use Data::Dumper;
$html =~ s#\s*</tr>\s*#</tr>\n#gis;
$html =~ s#\s*<tr[^>]*>\s*#\n<tr>#gis;
while(<FILTER>){
  my $pattern = $_;
  my @datalines = grep {/$pattern/} $html;
  foreach my $dataline (@datalines){
     my (@data) = $dataline =~ m#<td[^>]*>(.*?)</td>#gis;
     die Dumper(@data,$dataline);
  }
}
使用数据::转储程序;
$html=~s#\s*\s*\n#gis;
$html=~s#\s*]>\s*\n#gis;
while(){
我的$pattern=$\;
my@datalines=grep{/$pattern/}$html;
foreach my$dataline(@dataline){
我的(@data)=$dataline=~m#]*>(.*)地理信息系统;
模具转储程序(@data,$dataline);
}
}

将filter.txt和slurp HTML文件打开为标量。然后grep该模式的html,并使用一个简单的regexp解析该行

注意,这只适用于这种HTML结构,而不是坚如磐石的解决方案。使用Marpa实现更稳健的方法

use Data::Dumper;
$html =~ s#\s*</tr>\s*#</tr>\n#gis;
$html =~ s#\s*<tr[^>]*>\s*#\n<tr>#gis;
while(<FILTER>){
  my $pattern = $_;
  my @datalines = grep {/$pattern/} $html;
  foreach my $dataline (@datalines){
     my (@data) = $dataline =~ m#<td[^>]*>(.*?)</td>#gis;
     die Dumper(@data,$dataline);
  }
}
使用数据::转储程序;
$html=~s#\s*\s*\n#gis;
$html=~s#\s*]>\s*\n#gis;
while(){
我的$pattern=$\;
my@datalines=grep{/$pattern/}$html;
foreach my$dataline(@dataline){
我的(@data)=$dataline=~m#]*>(.*)地理信息系统;
模具转储程序(@data,$dataline);
}
}

过滤器文件是什么样子的?XML输出应该是什么样子的?你尝试过什么,遇到过哪些问题,在没有帮助的情况下,你在哪一步陷入困境?没有此信息,问题不完整。筛选文件是什么样子的?XML输出应该是什么样子的?你尝试过什么,遇到过哪些问题,在没有帮助的情况下,你在哪一步陷入困境?没有这些信息,这个问题是不完整的。