/// <summary> /// 新しい Article を追加して保存します。 /// </summary> public void SaveArticle(Article a){ // 保存用 Document を作る XmlDocument newDoc = Document.Clone() as XmlDocument; XmlNode newNode = a.ToXmlElement(newDoc); XmlElement metaData = newDoc.DocumentElement[MetaName]; if(metaData == null) throw new Exception("XMLにメタデータが含まれていません。"); newDoc.DocumentElement.InsertAfter(newNode, metaData); for(int i = 1; i <= SaveRetryTime; i++){ try{ using(FileStream saveFile = File.Open(FileMode.Create, FileAccess.Write, FileShare.None)){ newDoc.Save(saveFile); } return; } catch(UnauthorizedAccessException){ throw; } catch(IOException e) { if(i == SaveRetryTime) throw new IOException("書き込みアクセスが拒否されました。" + e.ToString()); System.Threading.Thread.Sleep(SaveRetryInterval); } } }