作者littleyow (有话直说)
看板MSNmessenger
标题Re: [求救] 如何将不同历史讯息合并、甚至排列成一 …
时间Mon Sep 15 19:59:52 2008
参考了专业大大的方式
用frontpage把讯息合并
一切都很顺利
但是有一个状况我一直没办法排除:
为什麽sessionID="x" x比较大的(新贴进去的)会显示在最上面啊= =
用一样的方式做了六个档案只有一个正常让新的显示在最下面
其他五个都出现这种bug
是我哪里做错了吗?(指令太长了用frontpage我没有办法看到最後面)
还是有推荐用什麽编译器来处理
麻烦知道的板友告诉我
谢谢
※ 引述《chiuling (chiu)》之铭言:
:
: 合并对话记录前
: 不可不知的知识
:
: 首先打开对话记录的*.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> │
: │ ﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹋﹌ │
: ╰─────────────────────────────────────╯
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.170.107.46
1F:推 forkc :会不会是时间的问题?「DateTime=」後面那串,好像会 09/15 21:26
2F:→ forkc :照这串的时间来排序。 09/15 21:26
3F:→ littleyow :我猜应该不是 因为都有照时间来啊 09/16 09:13
4F:推 forkc :我说的是「DateTime="2008-09-13T14:10:15.609Z"」这 09/16 16:11
5F:→ forkc :样一串东西,不是文章里写的「Date=」跟「Time=」, 09/16 16:11
6F:→ forkc :那串的时间跟「Time=」的时间有点不一样… 09/16 16:11
7F:→ forkc :你核对一下吧。 09/16 16:12