我需要这个小项目的帮助,我有两个文件,一个在越南/中文,另一个用英文,我想找到两个相同的元素(5k +)和替换,
示例:
VIET: <Property name="GM_SUSSECC" content="đem ngươi {@}{@}" type="2"/>
ENG: <Property name="GM_SUSSECC" content="{@}{@} Logged In" type="2"/>
所以,我想用英文找到相同的名字并用其内容替换。它就像翻译一样。
我尝试使用excel,但似乎它的格式松散并破坏了我的xml, 那么有谁知道更好的方法来做到这一点?
答案 0 :(得分:1)
我会使用xsh。创建一个由名称键入的英文内容的哈希表,然后将其替换为越南文件:
open eng.xml ;
$eng := hash ../@name //Property/@content ;
open viet.xml ;
for //Property {
my $viet = xsh:lookup('eng', @name) ;
if $viet set @content $viet ;
}
save :b ;
答案 1 :(得分:0)
我可能会使用相当出色的XML::Twig
库在perl
中解决此问题。这与Strawberry Perl
如果没有更多的XML示例,我无法给出完整的示例,但是:
#!/usr/bin/perl
use warnings;
use strict;
use XML::Twig;
my $source_eng = XML::Twig -> new -> parsefile ( 'test_eng.xml');
my $source_viet = XML::Twig -> new -> parsefile ( 'test_viet.xml');
foreach my $property ( $source_eng -> get_xpath('//Property') ) {
my $name = $property -> att('name');
my $first_match = $source_viet -> get_xpath("//Property[\@name=\'$name\']",0);
if ( $first_match ) {
print "match found for $name\n";
my $content = $first_match -> att('content');
$property -> set_att('content', $content );
}
}
$source_eng -> set_pretty_print('indented');
$source_eng -> print;