Re: [求救] 如何將不同歷史訊息合併、甚至排列成一 …

看板Instant_Mess作者 (chiu)時間17年前 (2008/07/17 22:55), 編輯推噓2(201)
留言3則, 3人參與, 最新討論串1/2 (看更多)
合併對話記錄前 不可不知的知 首先打開對話記錄的*.xml檔案,一開頭就會看到 <?xml version="1.0"?> <?xml-stylesheet type='text/xsl' href='MessageLog.xsl'?> 不要動它們,接著看下一行 ==============<Log FirstSessionID="數字" LastSessionID="數字">================= 在聊天記錄裡,對話會被分為很多個段落, 段落的計算方式是從 打開對話視窗聊第一句話~關掉對方視窗 就算一次 ╭──────────────────────────────────╮ │ 這個計數和日期無關,不會因為隔一天就從 1 計算,是會一直累計下去的 │ ╰──────────────────────────────────╯ 從這個例子來說 <Log FirstSessionID="1" LastSessionID="116"> 1 和 116 就是對話段落的"起"與"迄"數字 也就是你們的累積的對話被分成116段這麼多~ ╭──────────────────────────────────╮ │ 雖然說這個計數和日期無關,但不同電腦和同一個人聊的記錄是分開計算的│ │ 想要把分散的聊天記錄合併,這個數字就很重要,這會關係到對話記錄會不│ │ 會按照你想要顯示的順序出現 │ ╰──────────────────────────────────╯ =====<Message Date="xxx" Time="xxx" …略… SessionID="x">…略… </Message>====== msn每一句對話(按下enter送出就是一句),在對話記錄裡, 都會被包在<Message></Message>裡面,看看下面的例子 (為說明方便,文字我做了省略,並且為了清楚表達也將文字跳行 實際的內容,標籤都是連接著沒有跳行,可以打開自己的檔案對照看) ╭────────────────────────────────────╮ │<Message Date="…略…" Time="…略…" DateTime="…略…" SessionID="1"> │ │<From> ﹋﹋﹋﹋﹋﹋ │ │<User FriendlyName="這裡是發訊者的msn暱稱"/> │ │</From> │ │<To> │ │<User FriendlyName="這裡是接訊者的msn暱稱"/> │ │</To> │ │<Text Style="font-family:微軟正黑體; color:#054002; "> 對話內容 </Text> │ │</Message> │ ╰────────────────────────────────────╯ 在<Message></Message>還會有其它的標籤,在合併對話記錄時不需更動其它的標籤 ╭──────────────────────────────────╮ │ 註: │ │ 我們稱被 "<" 和 ">" 符號包起來的文字為標籤, │ │ 且結尾會用 "</" 和 ">" 包起來 │ │ 例如:Message標籤 <Message></Message> │ ╰──────────────────────────────────╯ 前面有說過,聊天記錄裡,對話會被分為很多個段落, 所以在關掉視窗前,所聊的每一句話都是同一個SessionID 也就是在對話記錄裡會看到<Message></Message>的SessionID都是同樣的 ╭───────────────────────────────────╮ │ msn對話: │ │ A:說 │ │ 有颱風要來了 │ │ B:說 │ │ 是喔 │ │ A:說 │ │ 對啊,但是沒有颱風假,sad... │ │ │ │ 對話記錄.xml │ │ <Message …略… SessionID="1">…略… 有颱風要來了</Text></Message> │ │ <Message …略… SessionID="1">…略… 是喔</Text></Message> │ │ <Message …略… SessionID="1">…略… 對啊,但是…</Text></Message> │ ╰───────────────────────────────────╯ 和前面一開始說的對話段落結合來看,檔案的結構就變成這樣 ╭──────────────────────────────────╮ │ <Log FirstSessionID="起數" LastSessionID="迄數"> │ │ <Message …略… SessionID="1"></Message> │ │ <Message …略… SessionID="1"></Message> │ │ <Message …略… SessionID="1"></Message> │ │ <Message …略… SessionID="2"></Message> │ │ <Message …略… SessionID="2"></Message> │ │ <Message …略… SessionID="2"></Message> │ │ <Message …略… SessionID="3"></Message> │ │ <Message …略… SessionID="3"></Message> │ │ <Message …略… SessionID="3"></Message> │ │ </Log> │ ╰──────────────────────────────────╯ 開始合併 對話記錄 當你手上有好幾個同一個聯絡人但不同時間的對話記錄檔案, 要先決定要把誰合併到誰 ========================= 簡單型合併 ============================ 所謂簡單型合併就是假設你手上有 a.xml 和 b.xml 都是跟甲聯絡人的對話記錄 而且兩個檔案的對話時間順序是一前一後 也就是說a.xml的時間都早於b.xml,所以要把b.xml的內容接在a.xml的後面 1.修改<Log>標籤 把a的對話段落的 迄數 + b的對話段落的 迄數 = 合併後對話段落的 迄數 ╭────────────── 舉例來說 ──────────────────╮ │ a.xml: <Log FirstSessionID="1" LastSessionID="116"> │ │ b.xml: <Log FirstSessionID="1" LastSessionID="89"> │ │ 合併後: <Log FirstSessionID="1" LastSessionID="205"> │ ╰─────────────────────────────────────╯ 2.修改 b.xml 的每一句對話的SessionID: ╭─────────────────────────────────────╮ │ <Message …略… SessionID = "b原來SessionID + a的迄數"> …略…</Message> │ │ ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹌ │ ╰─────────────────────────────────────╯ -- 打字打到累了....@ @" 其實手動合併一點都不難 只是真的要手動合併量大的對話記錄的話,到後面會摔筆.... ※ 引述《doctortwo (中肯界的翹楚)》之銘言: : 我這邊有很多分散的歷史訊息,時間也不一 : 所以我想請問 : 1. 如何將這些數於不同檔案的歷史訊息,合併成一個檔案? : (爬文有爬到 MSN History Merger,但我不知道怎麼用啊...) : 2. 更進一步地問,請問有辦法自行排列MSN對話的順序嗎? :  (因為比方說,我現在有檔案一跟檔案二) :  (比方檔案一有 7/1 7/2,而檔案二有 7/1的) :  (那我會希望最後合併的檔案,能先顯示檔案一的 7/1、接著顯示檔案二的 7/1) : (最後再顯示檔案一的 7/1) :  (所以不知道有沒有辦法做到?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.11.18.40 ※ 編輯: chiuling 來自: 124.11.18.40 (07/17 23:03) ※ 編輯: chiuling 來自: 124.11.18.40 (07/17 23:13)

07/18 12:45, , 1F
專業耶!~
07/18 12:45, 1F

07/19 17:18, , 2F
好專業~"~
07/19 17:18, 2F

09/15 21:29, , 3F
這篇介紹超專業!
09/15 21:29, 3F
文章代碼(AID): #18VrrPgD (Instant_Mess)
文章代碼(AID): #18VrrPgD (Instant_Mess)