gpt4 book ai didi

xml - 需要在 Linux env 中用 Perl 脚本修改几个 XML 文件

转载 作者:太空狗 更新时间:2023-10-29 12:34:13 26 4
gpt4 key购买 nike

我在一个目录中有几个名为 TC_Circle1TC_Circle2、`TC_Point1 等的 XML 文件,我想使用脚本更新每个文件的开始和结束日期文件。开始日期和结束日期在每个文件的内部和标签中。

我有一个脚本在我们使用 Sun 机器时可以工作,但它不能在新的 HP Linux 机器上工作。它没有显示任何错误,也没有更改日期。我需要帮助让它在 Linux 中运行。脚本:

#!/usr/local/bin/perl
$numArgs = @ARGV;
if ($numArgs != 2)
{
print "Usage: replace_default_date.pl DEFAULT_START_DATE DEFAULT_STOP_DATE\n";
}

@filenames = `ls TC*`;
chomp(@filenames);
foreach $file (@filenames)
{
open(REGFILE, "$file") || die "Cannot open |$file|";
@lines = <REGFILE>;
close(REGFILE);

open(WRITEFILE), ">$file") || die "Cannot open |$file|";

foreach $line (@lines)
{
if ($line =~ /DEFAULT_START_DATE/)
{
$newline = " " . $ARGV[0];
print WRITEFILE "$newline\n";
}
elsif ($line =~ /DEFAULT_STOP_DATE/)
{
$newline = " " . $ARGV[1];
print WRITEFILE "$newline\n";
}
else
{
print WRITEFILE "$line\n";
}
}
close (WRITEFILE);
}

下面是要修改的文件开头的样子:

<RequestSomething xmlns="http://something.com/accessservice">
<period xmlns="">
<start>2013-03-06T00:00:00</start>
<stop>2013-03-07T00:00:00</stop>
</period>
... The rest of the xml file...
</RequestSomething>

提前致谢, Crystal

最佳答案

您的脚本有几个问题。

1) 由于多了一个右括号导致编译错误:

open(WRITEFILE), ">$file") || die "Cannot open |$file|";

应该写成

open(WRITEFILE, ">$file") || die "Cannot open |$file|";

2) 你应该使用反引号而不是单引号

@filenames = 'ls TC*';

否则 @filenames 将只包含字符串 'ls TC*' 而不是实际的文件名列表:

@filenames = `ls TC*`;

3) 你确定 perl 解释器的路径是 /usr/local/bin/perl 吗?(从命令行尝试 which perl 来检查路径)。如果不是,则应更改第一行。

4) 该脚本永远不会处理您向我们展示的 XML 数据,因为它旨在替换包含字符串 DEFAULT_START_DATEDEFAULT_STOP_DATE 的行(日期提供为脚本的参数)。这些字符串不会出现在您向我们展示的数据中。

但是,如果 XML 文件是这样的,脚本将起作用:

<RequestSomething xmlns="http://something.com/accessservice">   
<period xmlns="">
<start>
DEFAULT_START_DATE
</start>
<stop>
DEFAULT_STOP_DATE
</stop>
</period>
... The rest of the xml file...
</RequestSomething>

我希望这会帮助您让它工作,但无论如何我建议您重写脚本,因为它使用了一种非常不可靠且危险的更改 XML 文件的方式。

关于xml - 需要在 Linux env 中用 Perl 脚本修改几个 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16445538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com