jviana Posted April 28, 2012 at 07:52 AM Report #451885 Posted April 28, 2012 at 07:52 AM Olá, tenho um problema, é que quando e quero adicionar um ficheiro no XML, ele não muda nada. Transforma isto: <?xml version="1.0" encoding="utf-8"?> <Musicas> <Musicas/> Nisto: <?xml version="1.0" encoding="utf-8"?> <Musicas /> E não adiciona nada. Código: Public Sub adicionar() If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or TextBox6.Text = "" Or TextBox7.Text = "" Or TextBox8.Text = "" Then MsgBox("Preencha os campos todos!", MsgBoxStyle.Critical, MsgBoxStyle.OkOnly) Exit Sub Else Dim xmlw As New XmlTextWriter(xmlPath, System.Text.Encoding.UTF8) xmlw.Formatting = Formatting.Indented xmlw.WriteStartDocument() xmlw.WriteStartElement("Musicas") numero = Form1.numero numero = numero + 1 Form1.numero = numero nome = TextBox1.Text compositor = TextBox2.Text prgutilizado = TextBox3.Text ano = TextBox4.Text arranjo = TextBox5.Text tipo = TextBox6.Text ficheiro = TextBox7.Text pdf = TextBox7.Text xmlw.Formatting = Formatting.Indented 'With xmlw '.WriteStartElement("Música ", numero) '.WriteElementString("nome", nome) '.WriteElementString("compositor", compositor) '.WriteElementString("programautilizado", prgutilizado) '.WriteElementString("ano", ano) '.WriteElementString("arranjo", arranjo) '.WriteElementString("tipo", tipo) '.WriteElementString("ficheiro", ficheiro) '.WriteElementString("pdf", pdf) '.WriteEndElement() 'End With xmlw.WriteEndElement() ' <- config xmlw.WriteEndDocument() xmlw.Flush() xmlw.Close() Dim xmlFile = XDocument.Load(xmlPath) Dim element = New XElement("Musicas", New XAttribute("nome", nome), New XAttribute("compositor", compositor), New XAttribute("programautilizado", prgutilizado), New XAttribute("ano", ano), New XAttribute("arranjo", arranjo), New XAttribute("tipo", tipo), New XAttribute("ficheiro", ficheiro), New XAttribute("pdg", pdf)) Dim parent = xmlFile...<Musicas>.FirstOrDefault() parent.Add(element) Me.Hide() End If End Sub Cumps. J.Viana Learning VB.Net HTML C/C++
José Lopes Posted April 28, 2012 at 08:59 PM Report #451954 Posted April 28, 2012 at 08:59 PM Não consigo perceber algumas das coisas que tens aí pelo meio, devem ser variáveis que tens por aí algures... mas experimenta adaptar isso para este exemplo: http://vb.net-informations.com/xml/create-xml-vb.net.htm Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
jviana Posted April 28, 2012 at 09:42 PM Author Report #451967 Posted April 28, 2012 at 09:42 PM O meu problema não é escrever mas sim inserir porque escrever é só tirar os " ' ", que funcionam. Cumps. J.Viana Learning VB.Net HTML C/C++
José Lopes Posted April 28, 2012 at 09:51 PM Report #451969 Posted April 28, 2012 at 09:51 PM Fiz Isto: Public Sub adicionar() Dim xmlPath As String = "C:\Users\jose.lopes\Desktop\a.xml" Dim xmlw As New XmlTextWriter(xmlPath, System.Text.Encoding.UTF8) xmlw.Formatting = Formatting.Indented xmlw.WriteStartDocument() xmlw.WriteStartElement("Musicas") numero = 0 numero = numero + 1 Me.numero = numero Dim nome As String = "ze neves" Dim compositor As String = "bach" Dim prgutilizado As String = "xml" Dim ano As Integer = 2004 Dim arranjo As String = "arranjo" Dim tipo As String = "tipo" Dim ficheiro As String = "ficheiro" Dim pdf As String = "pdf" xmlw.Formatting = Formatting.Indented With xmlw .WriteStartElement("Música ", numero) .WriteElementString("nome", nome) .WriteElementString("compositor", compositor) .WriteElementString("programautilizado", prgutilizado) .WriteElementString("ano", ano) .WriteElementString("arranjo", arranjo) .WriteElementString("tipo", tipo) .WriteElementString("ficheiro", ficheiro) .WriteElementString("pdf", pdf) .WriteEndElement() End With xmlw.WriteEndElement() ' <- config xmlw.WriteEndDocument() xmlw.Flush() xmlw.Close() End Sub Resultado... <?xml version="1.0" encoding="utf-8"?> <Musicas> <Música xmlns="1"> <nome>ze neves</nome> <compositor>bach</compositor> programautilizado>XML<programautilizado /> <ano>2004</ano> <arranjo>arranjo</arranjo> <tipo>tipo</tipo> <ficheiro>ficheiro</ficheiro> <pdf>pdf</pdf> </Música > </Musicas> Ou seja...não percebo porque fazes alguma depois de desta linha... xmlw.Close() Quando te pedirem peixe.... ensina-os a Pescar!!Hum..lálálálá!!
jpaulino Posted April 28, 2012 at 10:36 PM Report #451982 Posted April 28, 2012 at 10:36 PM Isto "<Musicas />" é a forma correcta de indicar um nó sem qualquer valor. Sugestão: lê a revista PROGRAMAR deste mês e aprende como trabalhar com XML Literals que é muito mais simples 😄
jviana Posted April 29, 2012 at 09:14 AM Author Report #452006 Posted April 29, 2012 at 09:14 AM Isto "<Musicas />" é a forma correcta de indicar um nó sem qualquer valor. Sugestão: lê a revista PROGRAMAR deste mês e aprende como trabalhar com XML Literals que é muito mais simples 😄 Funcionou, mas agora para adicionar uma variável dá-me erro. Tem que ser entre aspas ""? Cumps. J.Viana Learning VB.Net HTML C/C++
jpaulino Posted April 29, 2012 at 09:26 AM Report #452007 Posted April 29, 2012 at 09:26 AM Funcionou, mas agora para adicionar uma variável dá-me erro. Tem que ser entre aspas ""? Cumps. J.Viana Tens de mostrar
jviana Posted April 29, 2012 at 09:35 AM Author Report #452008 Posted April 29, 2012 at 09:35 AM Imports System.Xml Public Class frmadicionar Dim numero As Integer Dim nome As String Dim compositor As String Dim prgutilizado As String Dim ano As Integer Dim arranjo As String Dim tipo As String Dim ficheiro As String Dim pdf As String Dim iniciostart As Boolean = True Dim xmlPath As String = "C:\Users\João Viana\Desktop\Musica Banda.xml" Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click adicionar() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Me.Close() End Sub Public Sub adicionar() If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Or TextBox5.Text = "" Or TextBox6.Text = "" Or TextBox7.Text = "" Or TextBox8.Text = "" Then MsgBox("Preencha os campos todos!", MsgBoxStyle.Critical, MsgBoxStyle.OkOnly) Exit Sub Else 'Dim xmlw As New XmlTextWriter(xmlPath, System.Text.Encoding.UTF8) 'xmlw.Formatting = Formatting.Indented 'xmlw.WriteStartDocument() 'xmlw.WriteStartElement("Musicas") numero = Form1.numero numero = numero + 1 Form1.numero = numero nome = TextBox1.Text compositor = TextBox2.Text prgutilizado = TextBox3.Text ano = TextBox4.Text arranjo = TextBox5.Text tipo = TextBox6.Text ficheiro = TextBox7.Text pdf = TextBox7.Text 'xmlw.Formatting = Formatting.Indented 'With xmlw '.WriteStartElement("Música ", numero) '.WriteElementString("nome", nome) '.WriteElementString("compositor", compositor) '.WriteElementString("programautilizado", prgutilizado) '.WriteElementString("ano", ano) '.WriteElementString("arranjo", arranjo) '.WriteElementString("tipo", tipo) '.WriteElementString("ficheiro", ficheiro) '.WriteElementString("pdf", pdf) '.WriteEndElement() 'End With ' xmlw.WriteEndElement() ' <- config ' xmlw.WriteEndDocument() ' xmlw.Flush() ' xmlw.Close() 'Dim xmlFile = XDocument.Load(xmlPath) ' Dim element = New XElement("Musicas", New XAttribute("nome", nome), New XAttribute("compositor", compositor), New XAttribute("programautilizado", prgutilizado), New XAttribute("ano", ano), New XAttribute("arranjo", arranjo), New XAttribute("tipo", tipo), New XAttribute("ficheiro", ficheiro), New XAttribute("pdf", pdf)) ' Dim parent = xmlFile...<Musicas>.FirstOrDefault() ' parent.Add(element) ' Me.Hide() Dim xDoc = XDocument.Load(xmlPath) Dim parent = xDoc.<Musicas>.FirstOrDefault() Dim element = <Musicas id="numero" numero="numero" compositor="compositor" programautilizado="prgutilizado" ano="ano" arranjo="arranjo" tipo="tipo" ficheiro="ficheiro" pdf="pdf"/> parent.Add(element) xDoc.Save(xmlPath) Me.Close() End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim ficheiroshow As New OpenFileDialog ficheiroshow.Title = "Selecione o ficheiro..." ficheiroshow.Multiselect = False ficheiroshow.ShowDialog() ficheiro = ficheiroshow.FileName TextBox7.Text = ficheiro End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Dim ficheiropdf As New OpenFileDialog ficheiropdf.Title = "Selecione o ficheiro PDF..." ficheiropdf.Multiselect = False ficheiropdf.Filter = "PDF| *.pdf" ficheiropdf.ShowDialog() pdf = ficheiropdf.FileName TextBox8.Text = pdf End Sub End Class Learning VB.Net HTML C/C++
jpaulino Posted April 29, 2012 at 10:01 AM Report #452010 Posted April 29, 2012 at 10:01 AM Chama-se "Embedded Expressions" e fazes algo como: id=<%= numero %> ... Está também na revista, mas podes ler também este artigo: http://www.jorgepaulino.com/2009/09/vbnet-xml-literals-parte-ii-embedded.html
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now