2017-02-21 40 views
0

我有一个包含多个字段的XML文件。 其中一个字段是参考号码(唯一)。 另一个字段是一个profile-id(不是唯一的),它对于所有列表都是一样的。根据列表中的值更改xml字段值

另外,我有一个参考号码及其profile-id(在excel文件中)的列表。 我想要做的是自动匹配参考号字段,并根据列表更改xml中的profile-id字段,以便生成的xml将具有正确的参考号及其各自的profile-id列表而不是一般的列表,现在他们拥有相同的配置文件。

这可能吗?

在下面的示例中:z303-profile-id字段对于两个用户都是相同的,每个字段在z303-ref中都有唯一的标识符,而前者根据列表中的后者进行更改。

谢谢。

例子:

<patron-record> 
    <z303> 
     <z303-ref>000018804</z303-ref> 
     <z303-profile-id>USE_MSL</z303-profile-id> 
    </z303> 
</patron-record> 
<patron-record> 
    <z303> 
     <z303-ref>000018867</z303-ref> 
     <z303-profile-id>USE_MSL</z303-profile-id> 
    </z303> 
</patron-record> 

列表:

000018804    full staff 
000018867    Tester 

结果:

<patron-record> 
    <z303> 
     <z303-ref>000018804</z303-ref> 
     <z303-profile-id>full staff</z303-profile-id> 
    </z303> 
</patron-record> 
<patron-record> 
    <z303> 
     <z303-ref>000018867</z303-ref> 
     <z303-profile-id>Tester</z303-profile-id> 
    </z303> 
</patron-record> 
+0

你想使用什么编程语言? – choroba

+0

无论哪种语言都能以最简单的方式完成任务。 我只知道jQuery,C#和HTML5和CSS等东西,所以我必须学习如何从头开始。 –

+0

你可以删除不相关的元素,而是显示重复记录的方式吗? – choroba

回答

2

这里是你如何能做到这在xsh,一个工具,我碰巧维持:

perl { 
    open my $LST, '<', shift or die $!; 
    while (<$LST>) { 
     chomp; 
     my ($ref, $id) = split ' ', $_, 2; 
     $profile_id->{$ref} = $id; 
    } 
} ; 
open { shift }; 
for //patron-record/z303 { 
    my $new_id = xsh:lookup('profile_id', z303-ref) ; 
    if $new_id set z303-profile-id $new_id ; 
} 
save :b ; 

呼叫作为

xsh -al script.xsh file.lst file.xml 

假如你在一个XML文件中指定的列表,同样,代码将是简单得多。

+0

不幸的是,这个列表是从外部给我的,但它可能会被转换。 我会检查:) 是我需要运行的批处理文件的代码? 非常感谢! :D –

+1

这是一个可以运行的'xsh'脚本,下一个块显示如何从命令行或脚本运行它。 – choroba

+0

你写了file.lst - 这是我的xls文件吧? –