Esempio n. 1
0
        /// <summary>
        /// XmlContentsを読み込みます。
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public override XmlContents LoadContents(XmlContentsReadInfo info)
        {
            XmlContents   contents = info.Package.CreateXmlContents("");
            XmlTextReader reader   = info.Reader;

            while (reader.Read())
            {
                if (reader.IsStartElement(contents.ContentsRootElement))
                {
                    string name = reader.GetAttribute(contents.ContentsRootNameAttribute);
                    contents.Name = name;
                    int count = int.Parse(reader.GetAttribute(contents.ContentsRootCountAttribute));
                    reader.Read();
                    for (int i = 0; i < count; i++)
                    {
                        XmlContentsItemReadInfo itemInfo = new XmlContentsItemReadInfo()
                        {
                            Reader       = reader,
                            ItemProvider = contents.ItemProvider,
                            Contents     = contents
                        };
                        XmlContentsItem item = this.LoadContentsItem(itemInfo);

                        contents.AddXmlContentsItem(name + '.' + item.Name, item);
                    }
                    break;
                }
            }
            return(contents);
        }
Esempio n. 2
0
            /// <summary>
            /// ContentsItemを読み込みます。
            /// </summary>
            /// <param name="item"></param>
            /// <param name="info"></param>
            public override void LoadContentsItem(XmlContentsItem item, XmlContentsItemReadInfo info)
            {
                XmlTextReader reader = info.Reader;

                if (reader.HasValue)
                {
                    item.Value = double.Parse(reader.ReadString());
                }
            }
Esempio n. 3
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;
            }
        }
Esempio n. 4
0
            /// <summary>
            /// ContentsItemを読み込みます。
            /// </summary>
            /// <param name="item"></param>
            /// <param name="info"></param>
            public override void LoadContentsItem(XmlContentsItem item, XmlContentsItemReadInfo info)
            {
                XmlTextReader            reader    = info.Reader;
                ContainerXmlContentsItem container = (ContainerXmlContentsItem)item;

                try {
                    reader.ReadStartElement(container.ItemCountElement);
                    int count = int.Parse(reader.ReadString());
                    reader.Read();
                    for (int i = 0; i < count; i++)
                    {
                        //XmlContentsItem item1 = container.ItemProvider.Load(reader);
                        XmlContentsItem item1 = this.ParentReader.LoadContentsItem(info);
                        container.Items.Add(item1.Name, item1);
                    }
                }
                catch (XmlException) { // ex){
                                       //AppMain.g_AppMain.DebugWrite(ex);
                    throw;
                }
            }
Esempio n. 5
0
            /// <summary>
            /// ContentsItemを読み込みます。
            /// </summary>
            /// <param name="item"></param>
            /// <param name="info"></param>
            public override void LoadContentsItem(XmlContentsItem item, XmlContentsItemReadInfo info)
            {
                XmlTextReader            reader    = info.Reader;
                ContainerXmlContentsItem container = (ContainerXmlContentsItem)item;

                try {
                    //reader.ReadStartElement(container.ItemCountElement);
                    //int count = int.Parse(reader.ReadString());
                    //reader.Read();
                    //NOTE:HaveAttribute=Trueによりreader.Readが必要になったが、Count要素が無くなったため、reader.Readが不要となり、相殺された。
                    int count = int.Parse(reader.GetAttribute(container.ItemCountElement));
                    reader.Read();
                    for (int i = 0; i < count; i++)
                    {
                        //XmlContentsItem item1 = container.ItemProvider.Load(reader);
                        XmlContentsItem item1 = this.ParentReader.LoadContentsItem(info);
                        container.Items.Add(item1.Name, item1);
                    }
                }
                catch (XmlException) { // ex){
                                       //AppMain.g_AppMain.DebugWrite(ex);
                    throw;
                }
            }
Esempio n. 6
0
 /// <summary>
 /// 指定したXmlContentsItemの読み込みを行います。
 /// </summary>
 /// <param name="item"></param>
 /// <param name="info"></param>
 public abstract void LoadContentsItem(XmlContentsItem item, XmlContentsItemReadInfo info);
Esempio n. 7
0
 /// <summary>
 /// 派生クラスでオーバーライドされると、XmlContentsItemの読み込みを行うメソッドを定義します。
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public abstract XmlContentsItem LoadContentsItem(XmlContentsItemReadInfo info);