CORRECÇÃO: A classe XmlSerializer gera um resultado inesperado quando você usa a classe XmlSerializer para serializar o atributo numeration no .NET Framework 2.0

Traduções deste artigo Traduções deste artigo
ID do artigo: 943175 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você usa a classe XmlSerializer para serializar o atributo de numeration XML no Microsoft .NET Framework 2.0, a classe XmlSerializer gera um resultado inesperado.

Por exemplo, você espera que o resultado de serialização para ser o seguinte:
<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>
no entanto, o resultado real é o seguinte:
<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>

Resolução

Informações sobre o hotfix

Um hotfix com suporte foi disponibilizada pela Microsoft. No entanto, destina-se a corrigir o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack do .NET Framework 2.0 que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Microsoft Customer Atendimento para obter o hotfix. Para obter uma lista completa de telefones do serviço de suporte a clientes da Microsoft e informações sobre os custos de suporte, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.

Pré-requisitos

Você deve ter o .NET Framework 2.0 instalado para aplicar esse hotfix.

Requisitos de reinicialização

Não é necessário reiniciar o computador após aplicar esse hotfix.

Informações sobre a substituição do hotfix

Esse hotfix não substitui outros hotfixes.

Informações sobre o arquivo

A versão em inglês deste hotfix tem atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas no horário de universal coordenado (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário no item Data e hora no painel de controle.
Recolher esta tabelaExpandir esta tabela
Nome de arquivoVersão do arquivoTamanho do arquivoDataTempoPlataforma
System.XML.dll2.0.50727.9342,031,61630-09-200703: 45x 86

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Para obter mais informações sobre software atualização terminologia, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software

Etapas para reproduzir o problema

  1. Inicie o Visual Studio 2005.
  2. Create a blank C# project by using the following code:
    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. Criar e executar este aplicativo.
Quando você exibir o arquivo MyTest.xml, você verá o problema descrito na seção "Sintomas".

Propriedades

ID do artigo: 943175 - Última revisão: terça-feira, 20 de novembro de 2007 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 2.0
Palavras-chave: 
kbmt kbexpertiseadvanced kbpubtypekc kbqfe kbhotfixserver KB943175 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 943175

Submeter comentários

 

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