Пример #1
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;
            }
        }
Пример #2
0
 /// <summary>
 /// 指定したTypeに対応するXmlContentsItemReaderを返します。
 /// </summary>
 /// <param name="type"></param>
 /// <returns></returns>
 protected XmlContentsItemReader CreateItemReader(XmlContentsItemType type)
 {
     return(this.m_CreateItemReaderTable[type]());
 }