/// <summary> /// ContentsItemを保存します。 /// </summary> /// <param name="info"></param> public override void SaveContentsItem(XmlContentsItemWriteInfo info) { XmlWriter writer = info.Writer; XmlContentsItemProvider provider = info.ItemProvider; XmlContentsItem item = info.Item; writer.WriteStartElement(provider.ItemRootElement); writer.WriteAttributeString(provider.ItemRootNameAttribute, item.Name); writer.WriteAttributeString(provider.ItemRootTypeAttribute, item.Type.ToString()); //TODO:ItemのSave //item.Save(writer); XmlContentsItemWriter itemWriter = this.CreateItemWriter(item.Type); itemWriter.SaveContentsItem(info); writer.WriteEndElement(); }
/// <summary> /// XmlContentsItemを読み込みます。 /// </summary> /// <param name="info"></param> /// <returns></returns> public override XmlContentsItem LoadContentsItem(XmlContentsItemReadInfo info) { XmlTextReader reader = info.Reader; XmlContentsItemProvider provider = info.ItemProvider; try { if (reader.IsStartElement(provider.ItemRootElement)) { string name = reader.GetAttribute(provider.ItemRootNameAttribute); string typeName = reader.GetAttribute(provider.ItemRootTypeAttribute); XmlContentsItemType type = (XmlContentsItemType)Enum.Parse(typeof(XmlContentsItemType), typeName); bool isEmpty = reader.IsEmptyElement; XmlContentsItem item = provider.GenerateItem(type, name); if (item != null) { XmlContentsItemReader itemReader = this.CreateItemReader(type); if (!itemReader.HaveAttribute) { //読み取るItemが属性を持っていない場合、Readerを読み進める。 //属性を持っている場合、itemReader.LoadContentsItemメソッド内で属性値を読み取った後にReaderを読み進める。 reader.Read(); } itemReader.LoadContentsItem(item, info); //item.Load(reader); } if (!isEmpty) { reader.Read(); } return(item); } return(null); } catch (XmlException) { throw; } catch (Exception) {// ex){ //AppMain.g_AppMain.DebugWrite(ex); throw; } }