long paramValuesId = NextAvailableId;\r
int[] indices = new int[1];\r
\r
- int initialDepth = xmlReader.Depth;\r
- xmlReader.Read();\r
- int i = 0;\r
- while(xmlReader.Depth > initialDepth) \r
+ if (!xmlReader.IsEmptyElement)\r
{\r
- long paramId, paramHref;\r
- object objParam = null;\r
- paramNames.Add (xmlReader.Name);\r
- Type paramType = null;\r
- \r
- if (message.ParamTypes != null) {\r
- if (i >= message.ParamTypes.Length)\r
- throw new SerializationException ("Not enough parameter types in SoapMessages");\r
- paramType = message.ParamTypes [i];\r
- }\r
- \r
- indices[0] = i;\r
- objParam = DeserializeComponent(\r
- paramType,\r
- out paramId,\r
- out paramHref,\r
- paramValuesId,\r
- null,\r
- indices);\r
- indices[0] = paramValues.Add(objParam);\r
- if(paramHref != 0) \r
- {\r
- RecordFixup(paramValuesId, paramHref, paramValues.ToArray(), null, null, null, indices);\r
- }\r
- else if(paramId != 0) \r
- {\r
-// RegisterObject(paramId, objParam, null, paramValuesId, null, indices);\r
- }\r
- else \r
+ int initialDepth = xmlReader.Depth;\r
+ xmlReader.Read();\r
+ int i = 0;\r
+ while(xmlReader.Depth > initialDepth) \r
{\r
+ long paramId, paramHref;\r
+ object objParam = null;\r
+ paramNames.Add (xmlReader.Name);\r
+ Type paramType = null;\r
+ \r
+ if (message.ParamTypes != null) {\r
+ if (i >= message.ParamTypes.Length)\r
+ throw new SerializationException ("Not enough parameter types in SoapMessages");\r
+ paramType = message.ParamTypes [i];\r
+ }\r
+ \r
+ indices[0] = i;\r
+ objParam = DeserializeComponent(\r
+ paramType,\r
+ out paramId,\r
+ out paramHref,\r
+ paramValuesId,\r
+ null,\r
+ indices);\r
+ indices[0] = paramValues.Add(objParam);\r
+ if(paramHref != 0) \r
+ {\r
+ RecordFixup(paramValuesId, paramHref, paramValues.ToArray(), null, null, null, indices);\r
+ }\r
+ else if(paramId != 0) \r
+ {\r
+// RegisterObject(paramId, objParam, null, paramValuesId, null, indices);\r
+ }\r
+ else \r
+ {\r
+ }\r
+ i++;\r
}\r
- i++;\r
+ xmlReader.ReadEndElement();\r
}\r
-\r
+ else\r
+ {\r
+ xmlReader.Read();\r
+ }\r
+ \r
message.ParamNames = (string[]) paramNames.ToArray(typeof(string));\r
message.ParamValues = paramValues.ToArray();\r
- xmlReader.ReadEndElement();\r
RegisterObject(paramValuesId, message.ParamValues, null, 0, null, null);\r
return true;\r
}
Type currentType = obj.GetType();\r
TypeMetadata tm = GetTypeMetadata (currentType);\r
\r
- int objDepth = xmlReader.Depth;\r
object[] data = new object[tm.MemberInfos.Length];\r
xmlReader.Read();\r
for(int i = 0; i < tm.MemberInfos.Length; i++)\r