Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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中的特定代码_Xml_Perl_Search_Replace - Fatal编程技术网

使用perl搜索和替换xml中的特定代码

使用perl搜索和替换xml中的特定代码,xml,perl,search,replace,Xml,Perl,Search,Replace,我是Perl新手,我的任务是从目录中的xml文件中替换或删除注释部分() 下面是我的Perl代码 #!/usr/bin/perl use strict; use warnings; my $tag = 'SHORT_DESC'; open my $input_file, '<', 'test.xml' or die $!; open my $output_file, '>', 'test_out.xml' or die $!; my $input; { local $/;

我是Perl新手,我的任务是从目录中的xml文件中替换或删除注释部分(

下面是我的Perl代码

#!/usr/bin/perl

use strict;
use warnings;

my $tag = 'SHORT_DESC';

open my $input_file, '<', 'test.xml' or die $!;
open my $output_file, '>', 'test_out.xml' or die $!;

my $input;
{
  local $/;               #Set record separator to undefined.
  $input = <$input_file>; #This allows the whole input file to be read at once.
}

$input =~ s/&/@@@/g;
$input =~ s/^- (?=<)//gm;
$input =~ s/<header[^>]*>\K\s*<header[^>]*>//gis;
close $input_file or die $!;
print {$output_file} $input;
close $output_file or die $!;
#/usr/bin/perl
严格使用;
使用警告;
my$tag='SHORT_DESC';
打开我的$input_文件、'test_out.xml'或die$!;
我的$input;
{
本地$/;#将记录分隔符设置为未定义。
$input=;#这允许一次读取整个输入文件。
}
$input=~s/&@@@@g;
$input=~s/^-(?=\K\s*]*>///gis;
关闭$input_文件或die$!;
打印{$output_file}$input;
关闭$output_文件或die$!;
我的XML是

<?xml version = '1.0' encoding = 'UTF-8'?>
<!-- Order details-->
<order>
<Names>
<!-- Names-->
<content>This is dummy content</content>
</Names>
</order>

这是虚拟内容

使用适当的XML处理模块。我喜欢以下内容的包装:


使用适当的XML处理模块。我喜欢在以下方面使用包装器:


使用适当的XML处理模块。我喜欢在以下方面使用包装器:


使用适当的XML处理模块。我喜欢在以下方面使用包装器:




您是否因为特定原因键入了错误的XML注释?为什么要引用
@@
?还有,
my$input=do{local$/;}
。此外,您没有使用UTF-8层进行阅读。像这样的文件我不会键入您在文件中声明的注释字面上使用
Sinan我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。您是否出于特定原因键入了错误的xml注释?为什么引用参见
@@@@
?另外,
my$input=do{local$/;}
。此外,您没有使用UTF-8层进行阅读。像这样的文件我不会键入您在文件中声明的注释字面上使用
Sinan我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。您是否出于特定原因键入了错误的xml注释?为什么引用参见
@@@@
?另外,
my$input=do{local$/;}
。此外,您没有使用UTF-8层进行阅读。像这样的文件我不会键入您在文件中声明的注释字面上使用
Sinan我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。您是否出于特定原因键入了错误的xml注释?为什么引用参见
@@@@
?另外,
my$input=do{local$/;}
。另外,您没有使用UTF-8层进行阅读。像这样的文件我不是在键入您在文件中声明注释。我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。谢谢,您能指导我在哪里包括源代码和目标代码吗旧路径,如何将xsh2模块包含到程序中,可能其他方法可以实现我的任务。@NachiappanR:源目录和目标目录应该指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我使用ppm安装xsh2在中安装xsh2命令提示符,但我面临的错误是无法在@INC中找到XML/XSH2.pm(您可能需要安装XML::XSH2模块)(@INC包含:C:/Perl/site/lib C:/Perl/lib)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?谢谢,您能告诉我在哪里包含源文件夹路径和目标文件夹路径,如何将XSH2模块包含到程序中,可能还有其他方法方法可以实现我的任务。@NachiappanR:源目录和目标目录应该被指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我在命令提示符下使用ppm install xsh2安装xsh2,但我面临的错误是在@INC中找不到XML/xsh2.pm(您可能需要安装XML::XSH2模块)(@INC包含:C:/Perl/site/lib C:/Perl/lib。)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?谢谢,您能告诉我在哪里包含源文件夹路径和目标文件夹路径,如何将XSH2模块包含到程序中,可能还有其他方法方法可以实现我的任务。@NachiappanR:源目录和目标目录应该被指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我在命令提示符下使用ppm install xsh2安装xsh2,但我面临的错误是在@INC中找不到XML/xsh2.pm(您可能需要安装XML::XSH2模块)(@INC包含:C:/Perl/site/lib C:/Perl/lib。)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?谢谢,您能告诉我在哪里包含源文件夹路径和目标文件夹路径,如何将XSH2模块包含到程序中,可能还有其他方法方法可以实现我的任务。@NachiappanR:源目录和目标目录应该被指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我在命令提示符下使用ppm install xsh2安装xsh2,但我面临的错误是在@INC中找不到XML/xsh2.pm(您可能需要安装XML::XSH2模块)(@INC contains:C:/Perl/site/lib C:/Perl/lib。)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?
#! /usr/bin/perl
use warnings;
use strict;

use XML::XSH2;   # To handle XML.
use Path::Tiny;  # To move files around.

my ($source, $target) = @ARGV;

for my $file (path($source)->children(qr/\.xml$/)) {
    xsh "open $file ; delete //comment() ; save";
    path($file)->copy($target);
    path($file)->remove;
}