Como criar facilmente arquivos XML via código


por Fabio Aguiar em 31/10/2006

Olá amigos,

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 XmlWriterSettings

settings.Indent = True

settings.IndentChars = " "

settings.NewLineOnAttributes = False

settings.OmitXmlDeclaration = False


Agora criamos um StringBuilder e um XMLWriter:

Dim sb As New StringBuilder

Dim 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 With

tw.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 = "text/xml"

Response.Write(sb.ToString)

Response.End()

O resultado é o seguinte:

 

- <produtos>
- <produto id="1">
  <descricao>Papel sulfite</descricao>
  <categoria>Papeis</categoria>
  <preco>199.99</preco>
  <unidade>pct</unidade>
  <quantidade>1</quantidade>
- <estoque>
  <unidade>pct</unidade>
  <loja nome="matriz">10</loja>
  <almoxarifado>18</almoxarifado>
  </estoque>
  </produto>
- <produto id="2">
  <descricao>Etiqueta adesiv</descricao>
  <categoria>Etiquetas</categoria>
  <preco>19.99</preco>
  <unidade>pct</unidade>
  <quantidade>1</quantidade>
- <estoque>
  <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)

 
pronto, o restante do código é exatamente igual.
Espero que voces tenham aproveitado bastante.
até a próxima
voltar   comente  subir

 
Fabio Aguiar



Comentários:
Comentado por: Mmgr - 27/10/2008 0:00:00
ok., mas como alterar o xml?!
Comentado por: Mauricio Junior - 5/2/2010 0:00:00
Alterar de que jeito?

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Alterando e criptografando a String de Conexão em RunTime (.NET 2.0)
Como criar um CompositeControl, TextBox com Validador
Como criar facilmente arquivos XML via código
O que é Design Patterns?