static private LoadFromV8Xml ( string v8Xml ) : |
||
v8Xml | string | |
return |
internal static TypeInfo LoadFromV8Xml(string v8Xml)
{
if (string.IsNullOrEmpty(v8Xml) ||
string.Equals(v8Xml, "Null", StringComparison.InvariantCultureIgnoreCase) ||
string.Equals(v8Xml, "p1:Null", StringComparison.InvariantCultureIgnoreCase) ||
string.Equals(v8Xml, "d2p1:Null", StringComparison.InvariantCultureIgnoreCase)
)
{
return null;
}
TypeInfo typeIbfo = new TypeInfo();
typeIbfo.Type = ParseTypeEnumFromV8Xml(v8Xml);
typeIbfo.ReferenceTypeName = null;
if (typeIbfo.Type == TypeEnum.CatalogRef ||
typeIbfo.Type == TypeEnum.DocumentRef ||
typeIbfo.Type == TypeEnum.EnumRef
)
{
int dotPos = v8Xml.IndexOf('.');
if (dotPos >= 0)
{
typeIbfo.ReferenceTypeName = v8Xml.Substring(dotPos + 1);
}
}
return typeIbfo;
}
/// <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); }