void GenerateWriteAnyElementContent (XmlTypeMapMemberAnyElement member, string memberValue)
{
bool singleElement = (member.TypeData.Type == typeof (XmlElement));
string var, var2;
var = GetObTempVar ();
if (singleElement)
var2 = memberValue;
else {
var2 = GetObTempVar ();
WriteLineInd ("foreach (object " + var2 + " in " + memberValue + ") {");
}
WriteLine ("XmlNode " + var + " = " + var2 + " as XmlNode;");
WriteLine ("if (" + var + " == null && " + var2 + "!= null) throw new InvalidOperationException (\"A member with XmlAnyElementAttribute can only serialize and deserialize certain XmlNode types.\");");
string elem = GetObTempVar ();
WriteLine ("XmlNode " + elem + " = " + var + ";");
WriteLineInd ("if (" + elem + " is XmlElement) {");
if (!member.IsDefaultAny) {
for (int n=0; n<member.ElementInfo.Count; n++) {
XmlTypeMapElementInfo info = (XmlTypeMapElementInfo)member.ElementInfo[n];
string txt = "(" + elem + ".LocalName == " + GetLiteral(info.ElementName) + " && " + elem + ".NamespaceURI == " + GetLiteral(info.Namespace) + ")";
if (n == member.ElementInfo.Count-1) txt += ") {";
if (n == 0) WriteLineInd ("if (" + txt);
else WriteLine ("|| " + txt);
}
}
if (_format == SerializationFormat.Literal)
WriteLine ("WriteElementLiteral (" + elem + ", \"\", \"\", false, true);");
else
WriteLine ("WriteElementEncoded (" + elem + ", \"\", \"\", false, true);");
if (!member.IsDefaultAny) {
WriteLineUni ("}");
WriteLineInd ("else");
WriteLine ("throw CreateUnknownAnyElementException (" + elem + ".Name, " + elem + ".NamespaceURI);");
Unindent ();
}
WriteLineUni ("}");
WriteLine ("else " + elem + ".WriteTo (Writer);");
if (!singleElement)
WriteLineUni ("}");
}