Revert "Merge pull request #495 from nicolas-raoul/fix-for-issue2907-with-no-formatti...
authorRodrigo Kumpera <kumpera@gmail.com>
Tue, 11 Dec 2012 20:42:12 +0000 (15:42 -0500)
committerRodrigo Kumpera <kumpera@gmail.com>
Tue, 11 Dec 2012 20:42:12 +0000 (15:42 -0500)
This reverts commit 8bb9b4409d3f73fdf5ec2afc3b9add6bd33f712f, reversing
changes made to a5dd9d6910896c4d38e1b7d956f1124ab744bc67.

mcs/class/System.XML/System.Xml.Serialization/XmlSerializationReaderInterpreter.cs
mcs/class/System.XML/System.Xml.Serialization/XmlTypeMapping.cs

index 3659e1d638fe3eeaf1666cc0e451d81d456295b3..db1f19d0bf7b722231b6f33f6026e39026c5086f 100644 (file)
@@ -329,12 +329,12 @@ namespace System.Xml.Serialization
                        object[] flatLists = null;
                        object[] flatListsChoices = null;
                        Fixup fixup = null;
-                       int ind = -1;
+                       int ind = 0;
                        int maxInd;
 
                        if (readBySoapOrder) {
                                if (map.ElementMembers != null) maxInd = map.ElementMembers.Count;
-                               else maxInd = -1;
+                               else maxInd = 0;
                        }
                        else
                                maxInd = int.MaxValue;
@@ -373,15 +373,14 @@ namespace System.Xml.Serialization
                                AddFixup (fixup);
                        }
 
-                       XmlTypeMapMember previousMember = null;
-                       while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && (ind < maxInd - 1))
+                       while (Reader.NodeType != System.Xml.XmlNodeType.EndElement && (ind < maxInd)) 
                        {
                                if (Reader.NodeType == System.Xml.XmlNodeType.Element) 
                                {
                                        XmlTypeMapElementInfo info;
                                        
                                        if (readBySoapOrder) {
-                                               info = map.GetElement (Reader.LocalName, Reader.NamespaceURI);
+                                               info = map.GetElement (ind++);
                                        }
                                        else if (hasAnyReturnMember) {
                                                info = (XmlTypeMapElementInfo) ((XmlTypeMapMemberElement)map.ReturnMember).ElementInfo[0];
@@ -389,7 +388,9 @@ namespace System.Xml.Serialization
                                        }
                                        else {
                                                if (map.IsOrderDependentMap) {
-                                                       info = map.GetElement (Reader.LocalName, Reader.NamespaceURI);
+                                                       while ((info = map.GetElement (ind++)) != null)
+                                                               if (info.ElementName == Reader.LocalName && info.Namespace == Reader.NamespaceURI)
+                                                                       break;
                                                }
                                                else
                                                        info = map.GetElement (Reader.LocalName, Reader.NamespaceURI, -1);
@@ -397,16 +398,6 @@ namespace System.Xml.Serialization
 
                                        if (info != null && !readFlag[info.Member.Index] )
                                        {
-                                               if (info.Member != previousMember)
-                                               {
-                                                       ind++;
-                                                       previousMember = info.Member;
-                                               }
-
-                                               if (readBySoapOrder && info.ExplicitOrder != ind)
-                                                       throw new InvalidOperationException(string.Format("Element '{0}' has wrong order in sequence (expected - {1}, actual - {2}", Reader.LocalName, info.ExplicitOrder, ind));
-
-
                                                if (info.Member.GetType() == typeof (XmlTypeMapMemberList))
                                                {
                                                        if (_format == SerializationFormat.Encoded && info.MultiReferenceType)
index 2b0f8bd829d2768ed76993523618639fae3e1f0c..859042fd7e34d404f8bcc489a1cd91c5b3fc500a 100644 (file)
@@ -405,17 +405,6 @@ namespace System.Xml.Serialization
                        if (_elements == null) return null;
                        return (XmlTypeMapElementInfo)_elements [BuildKey (name,ns, order)];
                }
-
-               public XmlTypeMapElementInfo GetElement(string name, string ns)
-               {
-                       if (_elements == null) return null;
-
-                       foreach (XmlTypeMapElementInfo info in _elements.Values)
-                               if (info.ElementName == name && info.Namespace == ns)
-                                       return info;
-
-                       return null;
-               }
                
                public XmlTypeMapElementInfo GetElement (int index)
                {