Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hpires24

[Resolvido] ficheiro xml

Recommended Posts

Boa tarde precisava de uma ajuda se me pode ser facultada, estou usando o visual studio e programando para mobilidade sobre windows mobile 5.0 o que estou fazendo é apenas preencher um form e depois com os dados preenchidos nesse formulario gerar um xml isso ai eu consigo mas quero por exemplo que o primeiro formulario se chame LinhasCampo1.xml depois ao inserir mais dados no fomr crie outro ficheiro LinhasCampo2.xml ate aqui eu consigo mas quando eu vou inserir mais dados numa 3 etapa ele escreve esses dados em cima do LinhasCampo2.xml e eu pretendia que criasse um LinhasCampo3.xml passo a mostrar o codigo e agradecia ajuda por favor,

 

sem mais assunto e agradecendo desde ja

 

Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

		Dim i As Integer
		i = 1
		Dim nomexml As String
		Dim n As Integer
		n = 5


		'nomexml = "\My Documents\LinhasCampo.xml"
		nomexml = "\My Documents\LinhasCampo.xml"
		' For i = 1 To n


		If Not File.Exists(nomexml) Then


			Dim writer As New XmlTextWriter(nomexml, Nothing)

			writer.WriteStartDocument()

			writer.Formatting = Formatting.Indented

			writer.WriteStartElement("Linhas")


			writer.WriteStartElement("Linha")

			writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
			writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
			writer.WriteElementString("Linha", Me._wtxtWrite.Text)
			writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
			writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
			writer.WriteElementString("Ano", Me.TextBoxAno.Text)
			writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
			writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
			writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
			writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
			writer.WriteElementString("Cor", Me.cbcor.SelectedValue)



			writer.WriteEndElement()

			'escreve alguns espaços entre os nodes

			writer.WriteWhitespace("" & Chr(10) & "")

			writer.WriteFullEndElement()

			'escreve o XML para o arquivo e fecha o escritor

			writer.Close()

			MsgBox("Arquivo XML gerado com sucesso.")

		Else


			'Dim nomexml As String
			nomexml = "\My Documents\LinhasCampo" & i & ".xml"

			Dim writer As New XmlTextWriter(nomexml, Nothing)



			writer.WriteStartDocument()

			writer.Formatting = Formatting.Indented

			writer.WriteStartElement("Linhas")


			writer.WriteStartElement("Linha")

			writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
			writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
			writer.WriteElementString("Linha", Me._wtxtWrite.Text)
			writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
			writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
			writer.WriteElementString("Ano", Me.TextBoxAno.Text)
			writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
			writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
			writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
			writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
			writer.WriteElementString("Cor", Me.cbcor.SelectedValue)


			writer.WriteEndElement()


			writer.WriteWhitespace("" & Chr(10) & "")


			writer.WriteFullEndElement()



			writer.Close()


			MsgBox("Arquivo XML gerado com sucesso.")

			i = i + 1

		End If
		'Next


	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido Plataforma .NET » Visual Studio .NET http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma .NET

 

Para fazer isso seu código deve estar dentro de um laço para sua variável i ser incrementada, reparei que tem um for comentado, terá que usar algo para fazer este laço.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo simples:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		EscreveXml(5)
	End Sub

	Protected Sub EscreveXml(ByVal Quant As Integer)
		Dim i As Integer
		For i = 0 To Quant
			Response.Write("Nome do Xml é igual: Xml" & i & "<br />")
		Next d
	End Sub

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Protected Sub EscreveXml(ByVal Quant As Integer)
		Dim i As Integer
		Dim nomexml As String

		For i = 0 To Quant
			nomexml = "\My Documents\LinhasCampo.xml"
			If Not File.Exists(nomexml) Then


				Dim writer As New XmlTextWriter(nomexml, Nothing)

				writer.WriteStartDocument()

				writer.Formatting = Formatting.Indented

				writer.WriteStartElement("Linhas")


				writer.WriteStartElement("Linha")

				writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
				writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
				writer.WriteElementString("Linha", Me._wtxtWrite.Text)
				writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
				writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
				writer.WriteElementString("Ano", Me.TextBoxAno.Text)
				writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
				writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
				writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
				writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
				writer.WriteElementString("Cor", Me.cbcor.SelectedValue)

				writer.WriteEndElement()



				writer.WriteWhitespace("" & Chr(10) & "")

				writer.WriteFullEndElement()



				writer.Close()

				MsgBox("Arquivo XML gerado com sucesso.")

			Else

				'For i = 1 To n



				nomexml = "\My Documents\LinhasCampo" & i & ".xml"

				Dim writer As New XmlTextWriter(nomexml, Nothing)



				writer.WriteStartDocument()

				writer.Formatting = Formatting.Indented

				writer.WriteStartElement("Linhas")


				writer.WriteStartElement("Linha")

				writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
				writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
				writer.WriteElementString("Linha", Me._wtxtWrite.Text)
				writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
				writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
				writer.WriteElementString("Ano", Me.TextBoxAno.Text)
				writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
				writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
				writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
				writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
				writer.WriteElementString("Cor", Me.cbcor.SelectedValue)


				writer.WriteEndElement()


				writer.WriteWhitespace("" & Chr(10) & "")


				writer.WriteFullEndElement()



				writer.Close()

				'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"


				MsgBox("Arquivo XML gerado com sucesso.")

				' Next
				' i = i + 1


			End If

		Next
	End Sub

 

 

Eu tou a fazer assim e o q acontece é q ele escreve por exemplo 5 vezes ficehiros com o nome diferente tipo Linhascampo1.xml linhascampo2.xml ...etc mas com o mesmo conteudo e eu queria qd aparecesse a msgbox de arquivo escrito eu deposi digitasse outros valores no form mas que aparecesse o linhascampo2.xml depois dou ok e insiro outros valores no form e q me escrevesse o linhascampo3.xml fiz-me entender??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado você é um amigo mesmo, relativamente a minha aplicação nao é uma aplicação para windows mobile 5.0

 

quis dizer q nao é uma aplicação web mas sim para windows mobile 5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem o incomodo agradecia que se alguem soubesse esta solução me ajudasse pois tinha urgencia de ter feito para amanha e ate agora ainda nao consegui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o seguinte teste e deu certo.

Imports System.Xml

Public Class Form1

	Dim Cont As Integer

	Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

	End Sub

	Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
		Cont += 1
		Dim writer As New XmlTextWriter("Xml" & Cont & ".xml", Nothing)
		writer.WriteStartDocument()
		writer.Formatting = Formatting.Indented
		writer.WriteStartElement("Linhas")
		writer.WriteStartElement("Linha")
		writer.WriteElementString("Prop_id", "Prop_id")
		writer.WriteElementString("Sector", "Sector")
		writer.WriteEndElement()

		'escreve alguns espaços entre os nodes
		writer.WriteWhitespace("" & Chr(10) & "")
		writer.WriteFullEndElement()

		'escreve o XML para o arquivo e fecha o escritor
		writer.Close()
		MsgBox("Arquivo XML gerado com sucesso.")
	End Sub

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado Bruno voce é super legal segundo os testes que fiz esta a funcionar correctamente muito obrigado mesmo nao sei como lhe agradecer.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

So me falta um pequenino teste que é assim se eu tenho ja um ficheiro com esse nome no directorio entao cria outro com o i acima desse ou seja imaginemos que tenho la os seguintes ficheiros linhascampo1.xml, linhascampo2.xml, linhascampo3.xml entao o que ele vai fazer qd criar outra linha vai criar um linhascampo4.xml tou a tentar fazer isto do seguinte modo:

Dim i As Integer

	Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click


		i += 1
		Dim nomexml As String

		Dim maior As String

		Dim n As Integer
		n = 5


	  

		If File.Exists("\My Documents\LinhasCampo" & i & ".xml") Then


			'File.Create("\My Documents\LinhasCampo" & i + 1 & ".xml")

			Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i + 1 & ".xml", Nothing)

			writer.WriteStartDocument()

			writer.Formatting = Formatting.Indented

			writer.WriteStartElement("Linhas")


			writer.WriteStartElement("Linha")

			writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
			writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
			writer.WriteElementString("Linha", Me._wtxtWrite.Text)
			writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
			writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
			writer.WriteElementString("Ano", Me.TextBoxAno.Text)
			writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
			writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
			writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
			writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
			writer.WriteElementString("Cor", Me.cbcor.SelectedValue)

			writer.WriteEndElement()



			writer.WriteWhitespace("" & Chr(10) & "")

			writer.WriteFullEndElement()



			writer.Close()

			MsgBox("Arquivo XML gerado com sucesso.")

		Else



			Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i & ".xml", Nothing)



			writer.WriteStartDocument()

			writer.Formatting = Formatting.Indented

			writer.WriteStartElement("Linhas")



			writer.WriteStartElement("Linha")

			writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
			writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
			writer.WriteElementString("Linha", Me._wtxtWrite.Text)
			writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
			writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
			writer.WriteElementString("Ano", Me.TextBoxAno.Text)
			writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
			writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
			writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
			writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
			writer.WriteElementString("Cor", Me.cbcor.SelectedValue)


			writer.WriteEndElement()


			writer.WriteWhitespace("" & Chr(10) & "")


			writer.WriteFullEndElement()



			writer.Close()

			'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"


			MsgBox("Arquivo XML gerado com sucesso.")

			' Next
			i = i + 1


		End If

mas o que me acontece é que ele so faz o teste para o primeiro ou seja se existe um linhascampo1.xml e existe um linhascampo2.xml ele escreve em cima do linhascampo2.xml e depois escreve o linhascampo3.xml e eu pretendia como disse acima que ele verificasse no directorio se existe e começaria a escrever a partir do mais alto linhascampo&i&.xml, isto sera possivel fazer??

Compartilhar este post


Link para o post
Compartilhar em outros sites

O mais correto seria fazer a verificação, ae depois chamar sua função separadamente que cria o Xml, mas uma forma fácil de fazer isso será.

Logo abaixo do seu primeiro IF:

If File.Exists("\My Documents\LinhasCampo" & i & ".xml") Then
Chame o evento do próprio botão:

Button2_Click_1(sender, e)
Desta forma, ele chamará o botão de novo e irá incrementar sua variável novamente, até achar um arquivo que não exista no servidor para criar.

Seu código deve ficar da seguinte forma:

Dim i As Integer

	Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
		i += 1
		Dim nomexml As String
		Dim maior As String
		Dim n As Integer
		n = 5   

		If File.Exists("\My Documents\LinhasCampo" & i & ".xml") Then
			Button2_Click_1(sender, e)
			'File.Create("\My Documents\LinhasCampo" & i + 1 & ".xml")
			Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i + 1 & ".xml", Nothing)
			writer.WriteStartDocument()
			writer.Formatting = Formatting.Indented
			writer.WriteStartElement("Linhas")
			writer.WriteStartElement("Linha")
			writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
			writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
			writer.WriteElementString("Linha", Me._wtxtWrite.Text)
			writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
			writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
			writer.WriteElementString("Ano", Me.TextBoxAno.Text)
			writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
			writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
			writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
			writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
			writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
			writer.WriteEndElement()
			writer.WriteWhitespace("" & Chr(10) & "")
			writer.WriteFullEndElement()
			writer.Close()
			MsgBox("Arquivo XML gerado com sucesso.")
		Else
			Dim writer As New XmlTextWriter("\My Documents\LinhasCampo" & i & ".xml", Nothing)
			writer.WriteStartDocument()
			writer.Formatting = Formatting.Indented
			writer.WriteStartElement("Linhas")
			writer.WriteStartElement("Linha")
			writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
			writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
			writer.WriteElementString("Linha", Me._wtxtWrite.Text)
			writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
			writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
			writer.WriteElementString("Ano", Me.TextBoxAno.Text)
			writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
			writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
			writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
			writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
			writer.WriteElementString("Cor", Me.cbcor.SelectedValue)
			writer.WriteEndElement()
			writer.WriteWhitespace("" & Chr(10) & "")
			writer.WriteFullEndElement()
			writer.Close()

			'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"
			MsgBox("Arquivo XML gerado com sucesso.")

			' Next
			i = i + 1
		End If

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de mais fica mais um agradecimento pela sua ajuda e atenção Bruno exprimentei o seu exemplo e funciona legal 5 estrelas mesmo você é genial.

Como nao conseguia chegar a essa solução deixo outro codigo com o qual tb funciona ele criar um xml peladata de sistema ao segundo o qual será muito dificil o utilizador num segundo preencher o formulario todo e tb fica a funcionar segue codigo abaixo:

Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

		Dim nome As String
		nome = "\My Documents\LinhasCampo" & Format(Now, "HHmmss") & ".xml"
		Dim writer As New XmlTextWriter(nome, Nothing)

		writer.WriteStartDocument()

		writer.Formatting = Formatting.Indented

		writer.WriteStartElement("Linhas")


		writer.WriteStartElement("Linha")

		writer.WriteElementString("Prop_id", Me.TextBoxProp.Text)
		writer.WriteElementString("Sector", Me.Cb3.SelectedValue)
		writer.WriteElementString("Linha", Me._wtxtWrite.Text)
		writer.WriteElementString("Arvore", Me.TextBoxQtArvores.Text)
		writer.WriteElementString("TipoPlanta", Me.cbtipoplanta.SelectedValue)
		writer.WriteElementString("Ano", Me.TextBoxAno.Text)
		writer.WriteElementString("VariedadePE", Me.CbVPE.SelectedValue)
		writer.WriteElementString("AnoEnx", Me.Tbanoenx.Text)
		writer.WriteElementString("MesEnx", Me.TextBoxmesenx.Text)
		writer.WriteElementString("Variedade", Me.CbVariedade.SelectedValue)
		writer.WriteElementString("Cor", Me.cbcor.SelectedValue)


		writer.WriteEndElement()


		writer.WriteWhitespace("" & Chr(10) & "")


		writer.WriteFullEndElement()



		writer.Close()

		'maior = nomexml = "\My Documents\LinhasCampo" & i + 1 & ".xml"


		MsgBox("Arquivo XML gerado com sucesso.")

		' Next
		' i = i + 1


		'File.Create("\My Documents\LinhasCampo" & i + 1 & ".xml")





		'Me._wlblInfos.Text = ""

		'Me.TextBoxProp.Text = ""
		''Me.Cb3.SelectedValue = ""
		''Me._wtxtWrite.Text
		'Me.TextBoxQtArvores.Text = ""
		''Me.cbtipoplanta.SelectedValue
		'Me.TextBoxAno.Text = ""
		''Me.CbVPE.SelectedValue
		'Me.Tbanoenx.Text = ""
		'Me.TextBoxmesenx.Text = ""

		' EscreveXml(5)


	End Sub

talvez nao seja a melhor solução mas como nao vi logo o seu codigo Bruno foi a melhor solução que eu tinha.

No entao obrigado, e se tiver um tempinho como eu posso por exemplo guardar todos os valores que insiro nas textbox e combobox acima numa string?

Compartilhar este post


Link para o post
Compartilhar em outros sites

A idéia será a mesma da variável integer, mas terá que ser uma variável string. E toda vez que você for alimentá-la basta pegar o valor antigo concatenado com o valor novo que foi preenchido no seu TextBox.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.