Jump to content

Recommended Posts

Posted

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++

Posted

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á!!

Posted

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++

Posted
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++

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.