返回列表 发帖
本帖最后由 523066680 于 2019-5-23 11:46 编辑
use Mojo::DOM;
use File::Slurp;
my $xml = read_file( "test.xml" );
my $dom = Mojo::DOM->new->xml(1)->parse( $xml );
my @code = ('A' .. 'ZZZ');
for my $e ( $dom->find("Variable")->each ) {
    my $k = $e->attr("name");
    $h{$k} = $code[$id++] unless (exists $h{$k});
    $e->attr("name" => $h{$k} );
}
for my $e ( $dom->find("Text")->each ) {
    my $exp = $e->attr("textExp");
    $exp =~s/([\@\#])([\w\_]+)/$1$h{$2}/g;
    $e->attr("textExp"=>$exp);
}
printf "%s\n", $dom;COPY
<Variable column="city_id" name="A" type="string" />
<Variable column="city_name" name="B" type="string" />
<Variable column="weather_type" name="C" type="int" />
<Variable column="city_id" name="A" type="string" />
<Text alignV="center" color="#ababab" marqueeGap="2" marqueeSpeed="50" name="Qm" size="30" textExp="@A" w="458" x="100" y="300" />
<Text alignV="center" color="#ababab" marqueeGap="2" marqueeSpeed="50" name="QW" size="30" textExp="#B" w="458" x="100" y="300" />
<Text alignV="center" color="#ababab" marqueeGap="2" marqueeSpeed="50" name="QA" size="30" textExp="#C+#A" w="458" x="100" y="300" />COPY
[url=][/url]

TOP

本帖最后由 523066680 于 2019-5-23 11:45 编辑

NULL
[url=][/url]

TOP

回复 30# WHY

欢迎过来写感慨:
    提问题的正确方式(反面教材)
    http://www.bathome.net/viewthread.php?tid=51315
[url=][/url]

TOP

他这个多半是工作需求,商业用途,大概是抬高逆向门槛吧?
其中主要是 XML 的混淆。由于限制了批处理 和 PS,批处理正则不够强,还是 PS 划算。
但是即使用 PS,正则表达式要完美处理[后续可能产生的需求]也会让代码变得很复杂。所以建议是找一个 XML Parser(解析器)模块,PS肯定有,就是不知道需不需要额外安装。
让解析器去把XML变成数据结构,这样自由度就高了。

这样的问题,加价很合理啊。
[url=][/url]

TOP

名字怕重复可以用 MD5 啊。
[url=][/url]

TOP

返回列表