private int ParseFromUri(string uri) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.AllowAutoRedirect = false; request.UserAgent = "RedFace/0.1"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); RedFaceParser p = new RedFaceParser(); p.ParserEventRaised += WriteEvent; string charsetName = EncodingSniffer.ExtractEncodingNameFromMetaElement(response.ContentType); if(!string.IsNullOrEmpty(charsetName)){ Console.WriteLine("HTTP応答ヘッダで文字符号化方式が指定されています。: {0}", charsetName); p.SetForceEncoding(charsetName); } using(Stream data = response.GetResponseStream()){ p.Parse(data); } PrintResult(p); return 0; }
private void PrintResult(RedFaceParser p) { var logs = p.GetLogs(); foreach(ParserLog log in logs){ Console.WriteLine("{0}行{1}文字: {2}", log.Line.Number, log.ColumnNumber, log.Message); Console.WriteLine(" {0}", log.Line.Data); } Console.WriteLine("パース開始: {0}", p.StartTime); Console.WriteLine("パース終了: {0}", p.EndTime); Console.WriteLine("パース時間: {0}", p.EndTime - p.StartTime); Console.WriteLine(); Console.WriteLine("========"); // Console.WriteLine(p.Document.OuterXml); }
private int ParseFromFile(FileInfo file) { Console.WriteLine("ファイル: <{0}> をパースします。", file.FullName); RedFaceParser p = new RedFaceParser(); p.ParserEventRaised += WriteEvent; using(FileStream fs = file.Open(FileMode.Open, FileAccess.Read, FileShare.Read)){ p.Parse(fs); } PrintResult(p); return 0; }