/// <summary> /// Packageを保存します。 /// </summary> /// <param name="info"></param> public override void SavePackage(XmlContentsPackageWriteInfo info) { string filename = info.FileName; XmlContentsPackage package = info.Package; XmlWriter writer = XmlWriter.Create(filename, new XmlWriterSettings() { Indent = true, IndentChars = "\t" }); try { writer.WriteStartDocument(); writer.WriteStartElement(package.PackageRootElement); writer.WriteAttributeString(package.PackageRootCountAttribute, package.XmlContentsTable.Count.ToString()); writer.WriteAttributeString(package.PackageRootVersionAttribute, this.Version); foreach (XmlContents contents in package.XmlContentsTable.Values) { XmlContentsWriteInfo contentsInfo = new XmlContentsWriteInfo() { Writer = writer, Contents = contents }; this.SaveContents(contentsInfo); //contents.SaveFile(writer); } writer.WriteEndElement(); writer.WriteEndDocument(); } finally { if (writer != null) { writer.Close(); } } }
/// <summary> /// Contentsを保存します。 /// </summary> /// <param name="info"></param> public override void SaveContents(XmlContentsWriteInfo info) { XmlWriter writer = info.Writer; XmlContents contents = info.Contents; writer.WriteStartElement(contents.ContentsRootElement); writer.WriteAttributeString(contents.ContentsRootNameAttribute, contents.Name); writer.WriteAttributeString(contents.ContentsRootCountAttribute, contents.RootItem.Items.Count.ToString()); foreach (XmlContentsItem item in contents.RootItem.Items.Values) { XmlContentsItemWriteInfo itemInfo = new XmlContentsItemWriteInfo() { Writer = writer, ItemProvider = contents.ItemProvider, Item = item }; this.SaveContentsItem(itemInfo); //this.m_ItemProvider.Save(writer, item); } writer.WriteEndElement(); }
/// <summary> /// 派生クラスでオーバーライドされると、Contentsの保存を行うメソッドを定義します。 /// </summary> /// <param name="info"></param> public abstract void SaveContents(XmlContentsWriteInfo info);