2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.Runtime.Serialization.Formatters.Soap / System.Runtime.Serialization.Formatters.Soap / SoapReader.cs
index 58d398c0555ee16a342a28c7e56e6b93fd07d6f8..ee345899019a836eff597544315c856cc6cf3b2d 100755 (executable)
@@ -228,48 +228,55 @@ namespace System.Runtime.Serialization.Formatters.Soap {
                        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
                }
@@ -515,7 +522,6 @@ namespace System.Runtime.Serialization.Formatters.Soap {
                        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