/// <summary> /// 指定した板の草稿を削除 /// </summary> /// <param name="filePath"></param> /// <param name="draft"></param> public void Remove(BoardInfo board, Draft draft) { if (board == null) { throw new ArgumentNullException("board"); } if (draft == null) { throw new ArgumentNullException("draft"); } XmlDocument doc = new XmlDocument(); XmlElement root; string filePath = cache.GetFolderPath(board); filePath = Path.Combine(filePath, DraftFileName); if (File.Exists(filePath)) { doc.Load(filePath); root = doc.DocumentElement; // 同じスレッド番号を持つ草稿要素を検索するためのXPath string xpath = String.Format("draft/thread[@key=\"{0}\"]", draft.HeaderInfo.Key); // 既に同じ草稿が存在した場合、一端削除してから新しい要素を追加 XmlNode node = doc.SelectSingleNode(xpath); if (node != null) { root.RemoveChild(node); } doc.Save(filePath); } }
/// <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); }