andei meio sumido, pois estou muito atarefado com novos projetos e novas ferramentas, e não tive oportunidade de escrever o artigo da semana passada, mas estamos de volta. Essa semana quero mostrar como gerar um XML de uma forma bem simples, e gravar o resultado em um arquivo, ou mostrar no próprio browser.
O código abaixo foi feito em .NET 2.0
Pra começar, vamos criar um XmlWriterSettings para configurar nosso XML:
Dim settings As New XmlWriterSettingssettings.Indent = Truesettings.IndentChars = " "settings.NewLineOnAttributes = Falsesettings.OmitXmlDeclaration = False |
Agora criamos um StringBuilder e um XMLWriter:
Dim sb As New StringBuilderDim tw As XmlWriter = XmlWriter.Create(sb, settings) |
Em seguida, vamos gravar os dados:
With tw.WriteStartDocument() .WriteStartElement( "produtos").WriteStartElement( "produto").WriteAttributeString( "id", "1").WriteElementString( "descricao", "Papel sulfite").WriteElementString( "categoria", "Papeis").WriteElementString( "preco", "199.99").WriteElementString( "unidade", "pct").WriteElementString( "quantidade", "1").WriteStartElement( "estoque").WriteElementString( "unidade", "pct").WriteStartElement( "loja").WriteAttributeString( "nome", "matriz").WriteString( "10").WriteEndElement() 'loja.WriteElementString( "almoxarifado", "18").WriteEndElement() 'estoque.WriteEndElement() 'produto.WriteStartElement( "produto").WriteAttributeString( "id", "2").WriteElementString( "descricao", "Etiqueta adesiv").WriteElementString( "categoria", "Etiquetas").WriteElementString( "preco", "19.99").WriteElementString( "unidade", "pct").WriteElementString( "quantidade", "1").WriteStartElement( "estoque").WriteElementString( "unidade", "pct").WriteStartElement( "loja").WriteAttributeString( "nome", "filial 1").WriteString( "0").WriteEndElement() 'loja.WriteElementString( "almoxarifado", "5").WriteEndElement() 'estoque.WriteEndElement() 'produto.WriteEndElement() 'produtos.WriteEndDocument() End Withtw.Flush() tw.Close() |
por fim, vamos retornar o conteúdo desse xml no browser, para isso, basta mudar o contentType da página para text/xml:
Response.ContentType = Response.Write(sb.ToString) Response.End()
O resultado é o seguinte:
<descricao>Papel sulfite</descricao> <categoria>Papeis</categoria> <preco>199.99</preco> <unidade>pct</unidade> <quantidade>1</quantidade> <unidade>pct</unidade> <loja nome="matriz">10</loja> <almoxarifado>18</almoxarifado> </estoque> </produto> <descricao>Etiqueta adesiv</descricao> <categoria>Etiquetas</categoria> <preco>19.99</preco> <unidade>pct</unidade> <quantidade>1</quantidade> <unidade>pct</unidade> <loja nome="filial 1">0</loja> <almoxarifado>5</almoxarifado> </estoque> </produto> </produtos> |
Bem, agora para salvar esse XML num arquivo é muito fácil, basta alterar o inicio do nosso código, no lugar de colocar o StringBuilder como saida pro XML é só colocar o path do arquivo, se ele não existir, será criado um novo:
Dim tw As XmlWriter = XmlWriter.Create(MapPath("~/") & "arquivo.xml", settings) |