Este artigo demonstra como mapear automaticamente um fluxo XML específico em um conjunto de objetos destinados a conter o XML usando as classes de serialização XML.
A lista a seguir apresenta o hardware, software, infra-estrutura de rede e pacotes de serviços recomendados necessários:
Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT 4.0 Server.
Microsoft Visual Studio .NET.
A ferramenta Xsd.exe (fornecida com o Visual Studio .NET e o .Net Framework SDK e localizada em \Arquivos de programas\Microsoft.NET\FrameworkSDK\Bin ou em um local semelhante).
Este artigo supõe que você esteja familiarizado com os seguintes tópicos:
Crie classes serializáveis ou classes que foram projetadas para funcionar com as classes de serialização XML. Se você possui uma definição de esquema XML (XSD) que descreve o formato do arquivo XML que deseja carregar ou salvar, use a ferramenta Xsd.exe para criar essas classes automaticamente. Você também pode construí-las manualmente.
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Salve o esquema XSD a seguir, que descreve pedidos de compra, como um arquivo Po.xsd:
Use a ferramenta Xsd.exe para gerar os arquivos de classe.
Por exemplo, o código de linha de comando a seguir gera classes C#:
xsd /classes /language:C# PO.xsd
A ferramenta Xsd.exe gera as seguintes classes para o Visual Basic .Net quando usada com o esquema apresentado anteriormente:
Imports System.Xml.Serialization
Namespace XmlSerializationHowTo
<System.Xml.Serialization.XmlRootAttribute("purchaseOrder", [Namespace]:="", IsNullable:=false)> _
Public Class PurchaseOrder
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public shipTo As USAddress
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public billTo As USAddress
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public comment As String
<System.Xml.Serialization.XmlArrayAttribute(IsNullable:=false), _
System.Xml.Serialization.XmlArrayItemAttribute("item", IsNullable:=false)> _
Public items() As ItemsItem
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="date")> _
Public orderDate As Date
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public orderDateSpecified As Boolean
End Class
Public Class USAddress
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public name As String
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public street As String
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public city As String
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public state As String
Public zip As Decimal
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="NMTOKEN")> _
Public country As String
End Class
<System.Xml.Serialization.XmlTypeAttribute([Namespace]:="")> _
Public Class ItemsItem
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public productName As String
<System.Xml.Serialization.XmlElementAttribute(DataType:="positiveInteger", IsNullable:=false)> _
Public quantity As String
Public USPrice As Decimal
<System.Xml.Serialization.XmlElementAttribute(IsNullable:=false)> _
Public comment As String
<System.Xml.Serialization.XmlElementAttribute(DataType:="date", IsNullable:=false)> _
Public shipDate As Date
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public shipDateSpecified As Boolean
<System.Xml.Serialization.XmlAttributeAttribute()> _
Public partNum As String
End Class
End Namespace
Observe que a ferramenta Xsd.exe não insere o nome do espaço para nomes com as classes. O usuário deve fazer isso manualmente, dependendo do projeto do aplicativo. Neste exemplo, o espaço para nomes XmlSerializationHowTo é usado para englobar as classes geradas pela ferramenta Xsd.exe.
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Depois de criar as classes serializáveis, abra o Visual Studio .NET para criar um novo projeto de serialização.
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Crie um novo aplicativo de console no C# ou no Visual Basic .NET.
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Insira o arquivo de classe gerado pela ferramenta Xsd.exe no projeto. Para fazer isso, clique com o botão direito do mouse no projeto na janela Solution Explorer, clique em Add, selecione Add Existing Item e procure o arquivo de classe anteriormente gerado.
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Certifique-se de que o projeto contenha uma referência aos espaços para nomes System.Xml e XmlSerializationHowTo, que foram criados na etapa anterior. Use a instrução IMPORTS no espaço para nomes Xml para que não seja necessário qualificar declarações XmlSerializer nesses espaços para nomes posteriormente no código. Você deve usar a instrução Imports antes de qualquer outra declaração.
Código do Visual Basic .NET
using System.Xml.Serialization;
using System.IO;
using XmlSerializationHowTo;
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Crie uma instância da classe XmlSerializer e transmita o tipo de objeto cuja serialização você deseja desfazer. Este exemplo usa o tipo PurchaseOrder anteriormente definido.
Código do Visual Basic .NET
Dim serializer As XmlSerializer = New XmlSerializer(GetType(PurchaseOrder))
Código do C#
XmlSerializer serializer = new XmlSerializer(typeof(PurchaseOrder));
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Para ler o arquivo, chame o método Deserialize e transmita uma classe Stream, TextReader ou XmlReader. Um pedido de compra é retornado. Neste caso, use o seguinte código: Código do Visual Basic .NET
Dim reader As TextReader = New StreamReader("po.xml")
Dim po As PurchaseOrder = CType(serializer.Deserialize(reader), PurchaseOrder)
reader.Close()
Código do C#
TextReader reader = new StreamReader("po.xml");
PurchaseOrder po = (PurchaseOrder)serializer.Deserialize(reader);
reader.Close();
O arquivo Po.xml contém os dados associados a pedidos de compra que seguem o esquema XSD anteriormente definido. Este é o conteúdo do arquivo:
<?xml version='1.0' encoding='ISO-8859-1'?>
<purchaseOrder orderDate="1999-10-20">
<shipTo country="US">
<name>Alice Smith</name>
<street>123 Maple Street</street>
<city>Mill Valley</city>
<state>CA</state>
<zip>90952</zip>
</shipTo>
<billTo country="US">
<name>Robert Smith</name>
<street>8 Oak Avenue</street>
<city>Old Town</city>
<state>PA</state>
<zip>95819</zip>
</billTo>
<comment>Hurry, my lawn is going wild!</comment>
<items>
<item partNum="872-AA">
<productName>Lawnmower</productName>
<quantity>1</quantity>
<price>148.95</price>
<comment>Confirm this is electric</comment>
</item>
<item partNum="926-AA">
<productName>Baby Monitor</productName>
<quantity>1</quantity>
<price>39.98</price>
<shipDate>1999-05-21</shipDate>
</item>
</items>
</purchaseOrder>
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Manipule o objeto PurchaseOrder (por meio da variável PO) como normalmente manipularia qualquer objeto.
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Salve os dados alterados em um novo arquivo XML. Para gravar o arquivo, chame o método Serialize e transmita uma classe Stream, TextReader ou XmlReader, bem como uma instância do pedido de compra:
Código do Visual Basic .NET
Dim writer As TextWriter = New StreamWriter("po2.xml")
serializer.Serialize(writer, po)
writer.Close()
Código do C#
TextWriter writer = new StreamWriter("po2.xml");
serializer.Serialize(writer, po);
writer.Close();
Para criar uma classe serializável usando a ferramenta Xsd.exe, siga estas etapas:
Salve e feche o projeto.
Para obter mais informações sobre as classes XmlSerializer, StreamWriter e StreamReader, consulte a documentação do .NET Framework Class Library.
Para obter mais informações sobre serialização, consulte a documentação do .NET Framework Developer's Guide.
Para obter mais informações sobre como usar a ferramenta de definição de esquemas XML (XSD.exe), consulte a documentação do .NET Framework Developer's Guide ou a documentação do .NET Framework Tools.
Aviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.
O que podemos fazer para melhorar essa informação?
Para proteger sua privacidade, não inclua informações de contato em seus comentários.
Obrigado! Seus comentários são usados para nos ajudar a aperfeiçoar o conteúdo de suporte. Para obter mais opções de ajuda, visite a Home Page de Ajuda e Suporte.