public void ToXml(DAIEbx EbxFile, ref StringBuilder sb) { if (Descriptor.FieldName == "$") { DAIEbx.TabCount--; ComplexValue.ToXml(EbxFile, ref sb); DAIEbx.TabCount++; return; } sb.Append(DAIEbx.Tabs() + "<" + Descriptor.FieldName + ">"); switch (ValueType) { case DAIFieldType.DAI_Complex: case DAIFieldType.DAI_Array: sb.Append("\n"); if (ComplexValue != null) { ComplexValue.ToXml(EbxFile, ref sb); } else { sb.Append("[null]\n"); } sb.Append(DAIEbx.Tabs() + "</" + Descriptor.FieldName + ">\n"); return; case DAIFieldType.DAI_String: sb.Append(GetStringValue()); break; case DAIFieldType.DAI_Int: sb.Append(GetIntValue().ToString("X8")); break; case DAIFieldType.DAI_UInt: sb.Append(GetUIntValue().ToString("X8")); break; case DAIFieldType.DAI_Float: sb.Append(GetFloatValue().ToString("F3")); break; case DAIFieldType.DAI_Short: sb.Append(GetShortValue().ToString("X4")); break; case DAIFieldType.DAI_UShort: sb.Append(GetUShortValue().ToString("X4")); break; case DAIFieldType.DAI_Byte: sb.Append(GetByteValue().ToString("X2")); break; case DAIFieldType.DAI_UByte: sb.Append(GetByteValue().ToString("X2")); break; case DAIFieldType.DAI_Long: sb.Append(GetLongValue().ToString("X16")); break; case DAIFieldType.DAI_LongLong: for (int i = 0; i < Value.Length; i++) { sb.Append(Value[i].ToString("X2")); } break; case DAIFieldType.DAI_Bool: sb.Append(GetBoolValue().ToString()); break; case DAIFieldType.DAI_Enum: sb.Append(GetEnumValue()); break; case DAIFieldType.DAI_Guid: { uint UIntValue = GetUIntValue(); if ((UIntValue >> 31) == 1) { /* External Guid */ DAIExternalGuid Guid = EbxFile.ExternalGuids.ElementAt((int)(UIntValue & 0x7fffffff)); System.Data.SQLite.SQLiteConnection con = Database.GetConnection(); con.Open(); System.Data.SQLite.SQLiteDataReader reader = new System.Data.SQLite.SQLiteCommand("SELECT name,type FROM ebx WHERE guid = '" + Guid.FileGuidString() + "'", con).ExecuteReader(); reader.Read(); sb.Append("[" + reader.GetString(1) + "] " + reader.GetString(0)); } else if (UIntValue == 0) { /* NULL Guid */ sb.Append("[null]"); } else { /* Internal Guid */ byte[] Guid = EbxFile.InternalGuids[(int)(UIntValue - 1)]; sb.Append("[" + EbxFile.Instances[Guid].Descriptor.FieldName + "] "); for (int i = 0; i < Guid.Length; i++) { sb.Append(Guid[i].ToString("X2")); } } } break; } sb.Append("</" + Descriptor.FieldName + ">\n"); return; }