예제 #1
0
        private void SetValue(MemberName name, object value)
        {
            if (_name.IsAttribute)
            {
                throw new ArgumentException("這個節點只允許文字資料。");
            }

            if (value == null)
            {
                if (XmlRecordDictionary.ContainsKey(name))
                {
                    XmlRecordDictionary.Remove(name);
                }

                if (ChildrenDictionary.ContainsKey(name))
                {
                    ChildrenDictionary.Remove(name);
                }

                return;
            }

            if (value is XmlObject)
            {
                XmlObject dl = value as XmlObject;
                dl.SetName(name.FullName);
                XmlRecordDictionary[name] = dl;
            }
            else
            {
                XmlObject newValue = null;

                if (value is XmlObject)
                {
                    newValue = value as XmlObject;

                    if (name.IsAttribute && !newValue._name.IsAttribute)
                    {
                        throw new ArgumentException("這個節點只允許文字資料。");
                    }

                    //防止自行建立的 XData.Name 與 MemberName 不相同。
                    //因為是否為 Xml 屬性的資訊在 Name 之中。
                    newValue._name = name;
                }
                else
                {
                    newValue = new XmlObject(name.FullName)
                    {
                        _string_value = value + ""
                    }
                };

                ChildrenDictionary[name] = newValue;
            }
        }
예제 #2
0
        internal static XmlObject ParseList(IEnumerable <XElement> xmlList)
        {
            XmlObject result = new XmlObject()
            {
                UniqueMode = false
            };

            result.SetName(xmlList.First().Name.LocalName);

            foreach (XElement elm in xmlList)
            {
                result.XmlRecordList.Add(XmlObject.Parse(elm));
            }

            return(result);
        }
예제 #3
0
        internal static XmlObject ParseList(IEnumerable<XElement> xmlList)
        {
            XmlObject result = new XmlObject() { UniqueMode = false };
            result.SetName(xmlList.First().Name.LocalName);

            foreach (XElement elm in xmlList)
                result.XmlRecordList.Add(XmlObject.Parse(elm));

            return result;
        }