本帖最后由 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 |
|