作者chiuling (chiu)
看板MSNmessenger
標題Re: [求救] 如何將不同歷史訊息合併、甚至排列成一 …
時間Thu Jul 17 22:55:20 2008
合併
對話記錄前
不可不知的知識
首先打開對話記錄的*.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)
1F:推 pokejohnson :專業耶!~ 07/18 12:45
2F:→ purpleagle :好專業~"~ 07/19 17:18
3F:推 forkc :這篇介紹超專業! 09/15 21:29