ИСПРАВЛЕНИЕ: Класс XmlSerializer создает неожиданный результат при использовании класса XmlSerializer для сериализации в атрибуте нумерации.NET Framework 2.0

Переводы статьи Переводы статьи
Код статьи: 943175 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При использовании XmlSerializer класс для сериализации XML Нумерация атрибут в Microsoft.NET Framework 2.0, XmlSerializer класс создает неожиданный результат.

Например предполагается, что результат сериализации, чтобы быть следующим:
<myThing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Scott">
  <MyString xsi:nil="true" /> 
  <OptionC xsi:nil="true"/> 
</myThing>
Однако фактически происходит следующее:
<myThing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:Scott">
  <MyString xsi:nil="true"/> 
</myThing>

Решение

Сведения об исправлении

Исправление выпущенного корпорацией Майкрософт. Тем не менее он предназначен для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление находится на стадии дополнительного тестирования. Таким образом Если вы не представляет особой эта проблема, рекомендуется дождаться следующего.NET Framework 2.0 пакета обновления, содержащего это исправление.

Чтобы решить проблему немедленно, обратитесь в службу технической поддержки Майкрософт для получения исправления. Полный список телефонов служб поддержки клиентов корпорации Майкрософт и сведения о стоимости поддержки посетите следующий веб-узел корпорации Майкрософт:
http://support.Microsoft.com/contactus/?ws=Support
Примечание В особых случаях, предусмотренная для звонков в службу поддержки может быть отменена, если специалистом службы поддержки Майкрософт определяет, что решения проблемы является специально выпущенное. Затраты на обычные службы поддержки будут применяться дополнительные вопросы и проблемы, которые не соответствуют требованиям особым обновлением.

Необходимые условия

Необходимо иметь.NET Framework 2.0 установить данное исправление.

Необходимость перезагрузки

После установки данного исправления перезагружать компьютер не нужно.

Сведения о замене исправлений

Это исправление не заменяет других исправлений.

Сведения о файлах

Английская версия исправления содержит атрибуты файла (или более поздними), приведенные в следующей таблице. Дата и время для файлов указаны в формате общего скоординированного времени (UTC). При просмотре сведений о файле, он преобразуется в локальное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, следует использовать Часовой пояс на вкладке Дата и время элемент панели управления.
Свернуть эту таблицуРазвернуть эту таблицу
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
System.XML.dll2.0.50727.9342,031,61630-09-200703: 45X86

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах Microsoft, перечисленных в разделе «Относится к».

Дополнительная информация

Дополнительные сведения о программного обеспечения обновить терминологию, щелкните следующий номер статьи базы знаний Майкрософт:
824684Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Действия по воспроизведению проблемы

  1. Запустите Visual Studio 2005.
  2. Создайте пустой проект C# с помощью следующего кода:
    namespace Test
    {
        class Program
        {
            static void Main(string[] args)
            {
                string outfile = ".\\MyTest.xml";
                myThing mt = new myThing();
                mt.mystring = null;
                mt.ItemElementName = myThing.ItemChoiceType.OptionC;
                mt.item = null;
                mt.itemSpecified = true;
                XmlSerializer ser = new XmlSerializer(typeof(myThing));
                XmlTextWriter wtr = new XmlTextWriter(outfile, Encoding.UTF8);
                ser.Serialize(wtr, mt);
                wtr.Flush();
                wtr.Close();
            }
        }
    
        [XmlRoot(Namespace = "urn:Scott")]
        public class myThing
        {
            [XmlElement("MyString", IsNullable = true)]
            public string mystring;
    
            [XmlChoiceIdentifier("ItemElementName")]
            [XmlElement(ElementName = "OptionA", Type = typeof(object), IsNullable = true)]
            [XmlElement(ElementName = "OptionB", Type = typeof(object), IsNullable = true)]
            [XmlElement(ElementName = "OptionC", Type = typeof(object), IsNullable = true)]
            [XmlElement(ElementName = "OptionD", Type = typeof(object), IsNullable = true)]
            public object item;
    
            [XmlIgnore]
            public bool itemSpecified;
            [XmlIgnore]
            public ItemChoiceType ItemElementName;
            [XmlType(Namespace = "urn:Scott", IncludeInSchema = false, AnonymousType = false)]
            public enum ItemChoiceType
            {
                [XmlEnum("OptionA")]
                OptionA,
                [XmlEnum("OptionB")]
                OptionB,
                [XmlEnum("OptionC")]
                OptionC,
                [XmlEnum("OptionD")]
                OptionD
            }
        }
    }
    
  3. Построение и запуск этого приложения.
При просмотре файла MyTest.xml можно увидеть проблема, которая описывается в разделе «Проблема».
Примечание. Это ЭКСПРЕСС-ПУБЛИКАЦИЯ, подготовленная непосредственно службой технической поддержки Майкрософт . Сведения, содержащиеся в данном документе, предоставлены в качестве отклика на возникшие проблемы. Из-за срочности в материалах могут быть опечатки, и в любое время и без уведомления в них могут быть внесены изменения. Чтобы получить дополнительные сведения, см. Условия использования.

Свойства

Код статьи: 943175 - Последний отзыв: 19 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft .NET Framework 2.0
Ключевые слова: 
kbexpertiseadvanced kbqfe kbmt KB943175 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:943175

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com