作者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