+2007-02-20 Atsushi Enomoto <atsushi@ximian.com>
+
+ * SerializationCodeGenerator.cs,
+ XmlSerializationReaderInterpreter.cs :
+ Handle attributes on non-empty elements as well. Fixed bug #80131.
+
2007-02-20 Atsushi Enomoto <atsushi@ximian.com>
* SerializationCodeGenerator.cs,
WriteLineInd ("{");
WriteLine ("if (Reader.IsStartElement(" + GetLiteral(typeMap.ElementName) + ", " + GetLiteral(typeMap.Namespace) + "))");
WriteLineInd ("{");
- WriteLine ("if (Reader.IsEmptyElement)");
- WriteLineInd ("{");
bool dummy = false;
GenerateReadAttributeMembers (typeMap, (ClassMap)typeMap.ObjectMap, "parameters", true, ref dummy);
+ WriteLine ("if (Reader.IsEmptyElement)");
+ WriteLineInd ("{");
WriteLine ("Reader.Skip(); Reader.MoveToContent(); continue;");
WriteLineUni ("}");
WriteLine ("Reader.ReadStartElement();");
GenerateSetMemberValue (anyAttrMember, ob, "anyAttributeArray", isValueList);
}
WriteLine ("");
+ WriteLine ("Reader.MoveToElement ();");
GenerateEndHook ();
}
if (Reader.IsStartElement(typeMap.ElementName, typeMap.Namespace)
|| _format == SerializationFormat.Encoded)
{
+ ReadAttributeMembers ((ClassMap)typeMap.ObjectMap, parameters, true);
if (Reader.IsEmptyElement) {
- ReadAttributeMembers ((ClassMap)typeMap.ObjectMap, parameters, true);
Reader.Skip();
Reader.MoveToContent();
continue;
anyAttributeArray = ShrinkArray ((Array)anyAttributeArray, anyAttributeIndex, anyAttrMember.TypeData.Type.GetElementType(), true);
SetMemberValue (anyAttrMember, ob, anyAttributeArray, isValueList);
}
+ Reader.MoveToElement ();
}
void ReadMembers (ClassMap map, object ob, bool isValueList, bool readByOrder)
-2007-02-19 Atsushi Enomoto <atsushi@ximian.com>
+2007-02-20 Atsushi Enomoto <atsushi@ximian.com>
+
+ * XmlSerializationReaderTests.cs : test non-empty element as well.
+
+2007-02-20 Atsushi Enomoto <atsushi@ximian.com>
* XmlSerializationReaderTests.cs : added test for out attribute
parameters. It also tests empty root element.
Assert.IsNotNull (arr, "#1");
Assert.AreEqual (1, arr.Length, "#2");
Assert.AreEqual ("doh", arr [0], "#3");
+
+ xml = "<elem xmlns='urn:x' hooray='doh'></elem>";
+ arr = ser.Deserialize (new StringReader (xml)) as object [];
+ Assert.IsNotNull (arr, "#4");
+ Assert.AreEqual (1, arr.Length, "#5");
+ Assert.AreEqual ("doh", arr [0], "#6");
}
}