LoadFromV8Xml() static private method

static private LoadFromV8Xml ( string v8Xml ) : TypeInfo
v8Xml string
return TypeInfo
Beispiel #1
0
        /// <summary>
        /// Parse V8Xml value
        /// </summary>
        /// <param name="valueTag"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        internal bool TryParseV8XmlValue(XmlElement valueTag, out object value)
        {
            if (valueTag.GetAttribute(V8XmlXsiNilAttr) == "true")
            {
                value = null;
                return(true);
            }

            string typeStr = valueTag.GetAttribute(V8XmlXsiTypeAttr);

            {
                TypeInfo valueType = TypeInfo.LoadFromV8Xml(typeStr);
                if (valueType != null &&
                    valueType.Type != TypeEnum.Unknown &&
                    valueType.TryParseValueFromV8Xml(Session, valueTag.InnerText, out value)
                    )
                {
                    return(true);
                }
            }

            foreach (var valueType in Types)
            {
                if (valueType.TryParseValueFromV8Xml(Session, valueTag.InnerText, out value))
                {
                    return(true);
                }
            }

            value = null;
            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Load from V8 xml
        /// </summary>
        /// <param name="node"></param>
        void IV8XmlSerializable.LoadFromV8Xml(XmlNode node)
        {
            XmlElement typeDescTag = (XmlElement)node;

            List <TypeInfo> typesList = new List <TypeInfo>();


            foreach (var nd1 in typeDescTag.ChildNodes)
            {
                XmlElement typesTag = nd1 as XmlElement;


                if (typesTag == null ||
                    !(typesTag.Name == V8XmlTypesTagName ||
                      typesTag.Name == V8XmlD2P1NamespaceName + ":" + V8XmlTypesTagName ||
                      typesTag.Name == V8XmlP1NamespaceName + ":" + V8XmlTypesTagName
                      )
                    )
                {
                    continue;
                }


                foreach (var nd2  in typesTag.ChildNodes)
                {
                    XmlElement typeTag = nd2 as XmlElement;

                    if (typeTag == null ||
                        !(typeTag.Name == V8XmlTypeTagName ||
                          typeTag.Name == V8XmlD2P1NamespaceName + ":" + V8XmlTypeTagName ||
                          typeTag.Name == V8XmlP1NamespaceName + ":" + V8XmlTypeTagName
                          )
                        )
                    {
                        continue;
                    }

                    TypeInfo typeInfo = TypeInfo.LoadFromV8Xml(typeTag.InnerXml);
                    if (typeInfo != null)
                    {
                        typesList.Add(typeInfo);
                    }
                }
            }

            _types = typesList.ToArray();
        }