2017-02-21 84 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文件吧? –