Exemple #1
0
        /// <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();
        }
Exemple #2
0
        /// <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;
            }
        }