public void WriteToXMLWriter(XmlWriter xmlWriter) { for (int i = 0; i < Instances.Count; i++) { byte[] Guid = Instances.Keys.ElementAt(i); DAIComplex ComplexValue = Instances.Values.ElementAt(i); String GuidString = ""; for (int j = 0; j < Guid.Length; j++) { GuidString += Guid[j].ToString("X2"); } xmlWriter.WriteStartElement(ComplexValue.Descriptor.FieldName); xmlWriter.WriteAttributeString("Guid", GuidString); ComplexValue.WriteToXmlWriter(xmlWriter, this); xmlWriter.WriteEndElement(); } }
public void WriteToXMLWriter(XmlWriter xmlWriter, DAIEbx EbxFile) { if (Descriptor.FieldName == "$") { ComplexValue.WriteToXmlWriter(xmlWriter, EbxFile); return; } xmlWriter.WriteStartElement(Descriptor.FieldName); switch (ValueType) { case DAIFieldType.DAI_Complex: case DAIFieldType.DAI_Array: if (ComplexValue != null) { ComplexValue.WriteToXmlWriter(xmlWriter, EbxFile); } break; case DAIFieldType.DAI_String: xmlWriter.WriteString(XmlConvert.EncodeNmToken(GetStringValue())); break; case DAIFieldType.DAI_Int: xmlWriter.WriteValue(GetIntValue().ToString("X8")); break; case DAIFieldType.DAI_UInt: xmlWriter.WriteValue(GetUIntValue().ToString("X8")); break; case DAIFieldType.DAI_Float: xmlWriter.WriteValue(GetFloatValue().ToString("F3")); break; case DAIFieldType.DAI_Short: xmlWriter.WriteValue(GetShortValue().ToString("X4")); break; case DAIFieldType.DAI_UShort: xmlWriter.WriteValue(GetUShortValue().ToString("X4")); break; case DAIFieldType.DAI_Byte: xmlWriter.WriteValue(GetByteValue().ToString("X2")); break; case DAIFieldType.DAI_Long: xmlWriter.WriteValue(GetLongValue().ToString("X16")); break; case DAIFieldType.DAI_LongLong: for (int i = 0; i < Value.Length; i++) { xmlWriter.WriteValue(Value[i].ToString("X2")); } break; case DAIFieldType.DAI_Enum: xmlWriter.WriteString(XmlConvert.EncodeNmToken(GetEnumValue())); break; case DAIFieldType.DAI_Guid: { uint UIntValue = GetUIntValue(); if ((UIntValue >> 31) == 1) { /* External Guid */ DAIExternalGuid Guid = EbxFile.ExternalGuids.ElementAt((int)(UIntValue & 0x7fffffff)); xmlWriter.WriteValue(Guid.ToString()); } else if (UIntValue == 0) { /* NULL Guid */ xmlWriter.WriteValue("00"); } else { /* Internal Guid */ byte[] Guid = EbxFile.InternalGuids[(int)(UIntValue - 1)]; for (int i = 0; i < Guid.Length; i++) { xmlWriter.WriteValue(Guid[i].ToString("X2")); } } } break; } xmlWriter.WriteEndElement(); }