/// <summary> /// 指定したスレッドの草稿を取得 /// </summary> /// <param name="header"></param> /// <returns></returns> public Draft Load(ThreadHeader header) { if (header == null) { throw new ArgumentNullException("header"); } Draft draft = null; string filePath = cache.GetFolderPath(header.BoardInfo); filePath = Path.Combine(filePath, DraftFileName); if (File.Exists(filePath)) { XmlDocument doc = new XmlDocument(); doc.Load(filePath); // 同じスレッド番号を持つ草稿要素を検索するためのXPath string xpath = String.Format("draft/thread[@key=\"{0}\"]", header.Key); XmlNode node = doc.SelectSingleNode(xpath); if (node != null && ThreadIndexer.Read(cache, header) != null) { string name = node.SelectSingleNode("from").InnerText; string email = node.SelectSingleNode("email").InnerText; string body = node.SelectSingleNode("message").InnerText; // 草稿情報を作成 PostRes res = new PostRes(name, email, body); draft = new Draft(header, res); } } return(draft); }