メッセンジャーのログを発言者毎にわける

メモリのこと全然考えてないなこれ。ログのサイズ小さければいいけど。

log.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- ?xml-stylesheet type='text/xsl' href='MessageLog.xsl'? -->
<Log FirstSessionID="1" LastSessionID="1">
	<!-- Example Sent Message -->
	<!--
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="Local User"/></From>
		<To><User FriendlyName="Remote User"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">sent message body</Text>
	</Message>
	-->
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="foo"/></From>
		<To><User FriendlyName="hoge"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">foo to hoge</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="bar"/></From>
		<To><User FriendlyName="hoge"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">bar to hoge</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="baz"/></From>
		<To><User FriendlyName="hoge"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">baz to hoge</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="bar"/></From>
		<To><User FriendlyName="piyo"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">bar to piyo</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="foo"/></From>
		<To><User FriendlyName="piyo"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">foo to piyo</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="baz"/></From>
		<To><User FriendlyName="piyo"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">baz to piyo</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="baz"/></From>
		<To><User FriendlyName="fuga"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">baz to fuga</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="foo"/></From>
		<To><User FriendlyName="fuga"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">foo to fuga</Text>
	</Message>
	<Message Date="23/09/2008" Time="10:28:53" DateTime="2008-09-23T09:28:53.990Z" SessionID="1">
		<From><User FriendlyName="bar"/></From>
		<To><User FriendlyName="fuga"/></To>
		<Text Style="font-family:FONT_FAMILY; color:#HEXCOLOR; ">bar to fuga</Text>
	</Message>
	<!-- Example Received Message -->
	<!--
	<Message Date="23/09/2008" Time="10:29:05" DateTime="2008-09-23T09:29:05.412Z" SessionID="1">
		<From><User FriendlyName="Remote User"/></From>
		<To><User FriendlyName="Local User"/></To>
		<Text Style="font-family:FONT_FAMILTY; color:#HEXCOLOR; ">received message body</Text>
	</Message>
	-->
</Log>

log.wsf

<?xml version="1.0" encoding="utf-8"?>
<job>
<object id="$dom" progid="Microsoft.XMLDOM"/>
<script language="JScript"><![CDATA[
(function() {
  $dom.load('log.xml');
  for (var o = {}, i = 0, e = $dom.getElementsByTagName('From'), l = e.length; i < l; i++) {
    var c = e[i], n = c.getElementsByTagName('User')[0].getAttribute('FriendlyName');
    if (!o[n]) o[n] = [];
    o[n].push(c.parentNode);
  }
  for (var p in o) {
    $dom.loadXML(['<', '>\n</', '>'].join('Messages'));
    var a = o[p], df = $dom.createDocumentFragment();
    for (var i = 0, l = a.length; i < l; df.appendChild(a[i++]));
    $dom.documentElement.appendChild(df);
    $dom.save(p + '.txt');
  }
})();
]]></script>
</job>