static private LoadFromV8Xml ( string v8Xml ) : |
||
v8Xml | string | |
return |
/// <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); }
/// <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(); }