public MsnLog Read(string msnHistoryFile) { if (string.IsNullOrEmpty(msnHistoryFile)) { throw new ArgumentNullException("The file name can not be null"); } if (File.Exists(msnHistoryFile) == false) { throw new FileNotFoundException("Can not find file" + msnHistoryFile); } var log = default(MsnLog); var xmlDoc = new XmlDocument(); using (var xmlReader = new XmlTextReader(msnHistoryFile)) { xmlDoc.Load(xmlReader); log = new MsnLog() { XmlFilePath = new FileInfo(msnHistoryFile).FullName }; ReadHead(xmlDoc, log); var rootNode = ReadLogBasicProperty(xmlDoc, log); ReadMessages(log, rootNode); } return(log); }
private static void ReadMessages(MsnLog log, XmlNode rootNode) { var messages = rootNode.SelectNodes("*"); foreach (XmlNode msgNode in messages) { log.Messages.Add(MsnMessageFactory.Create(msgNode)); } }
private static XmlNode ReadLogBasicProperty(XmlDocument xmlDoc, MsnLog log) { var logNode = xmlDoc.SelectSingleNode("Log"); log.FirstSessionID = int.Parse(logNode.Attributes["FirstSessionID"].Value); log.LastSessionID = int.Parse(logNode.Attributes["LastSessionID"].Value); return(logNode); }
private static void ReadHead(XmlDocument xmlDoc, MsnLog log) { log.Declaration = xmlDoc.FirstChild as XmlDeclaration; log.Xsl = xmlDoc.FirstChild.NextSibling as XmlProcessingInstruction; }