Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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();
        }