Пример #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);
        }
Пример #2
0
            /// <summary>
            /// ContentsItemの保存を行います。
            /// </summary>
            /// <param name="info"></param>
            public override void SaveContentsItem(XmlContentsItemWriteInfo info)
            {
                XmlWriter       writer = info.Writer;
                XmlContentsItem item   = info.Item;

                writer.WriteString(item.Value.ToString());
            }
Пример #3
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());
                }
            }
Пример #4
0
 /// <summary>
 /// 名前を指定してXmlContentsItemが変更されていないかどうかを返します。
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public bool IsDefaultValue(string name, XmlContentsItem value)
 {
     if (this.m_DefaultConfig.ContainsXmlContentsItem(name))
     {
         XmlContentsItem item = this.m_DefaultConfig.GetXmlContentsItem(name);
         if (item != null && item.Type != XmlContentsItemType.Container)
         {
             return(item.Value.Equals(value.Value));
         }
     }
     return(false);
 }
Пример #5
0
 private void AddItemToListView(string name, XmlContentsItem item)
 {
     if (item.Type == XmlContentsItemType.Container)
     {
         foreach (XmlContentsItem child in ((ContainerXmlContentsItem)item).Items.Values)
         {
             this.AddItemToListView(name + item.Name + ".", child);
         }
     }
     else
     {
         this.listView1.Items.Add(new ListViewItem(new string[] { name + item.Name, item.Value.ToString() }));
     }
 }
Пример #6
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();
        }
Пример #7
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;
            }
        }
Пример #8
0
            /// <summary>
            /// ContentsItemの保存を行います。
            /// </summary>
            /// <param name="info"></param>
            public override void SaveContentsItem(XmlContentsItemWriteInfo info)
            {
                XmlWriter                writer    = info.Writer;
                XmlContentsItem          item      = info.Item;
                ContainerXmlContentsItem container = (ContainerXmlContentsItem)item;

                writer.WriteElementString(container.ItemCountElement, container.Items.Count.ToString());
                foreach (XmlContentsItem item1 in container.Items.Values)
                {
                    XmlContentsItemWriteInfo itemInfo = new XmlContentsItemWriteInfo()
                    {
                        Writer       = info.Writer,
                        ItemProvider = info.ItemProvider,
                        Item         = item1
                    };
                    this.ParentWriter.SaveContentsItem(itemInfo);
                    //this.m_ItemProvider.Save(writer, item1);
                }
            }
Пример #9
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;
                }
            }
Пример #10
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;
                }
            }
Пример #11
0
 /// <summary>
 /// configの値がデフォルト値かどうかを判定します。
 /// </summary>
 /// <param name="name"></param>
 /// <param name="value"></param>
 /// <returns></returns>
 public bool IsDefaultValue(string name, XmlContentsItem value)
 {
     return(this.m_ConfigHelper.IsDefaultValue(name, value));
 }
Пример #12
0
 /// <summary>
 /// 指定したXmlContentsItemの読み込みを行います。
 /// </summary>
 /// <param name="item"></param>
 /// <param name="info"></param>
 public abstract void LoadContentsItem(XmlContentsItem item, XmlContentsItemReadInfo info);