jviana Posted June 10, 2012 at 09:14 AM Report Share #461732 Posted June 10, 2012 at 09:14 AM Boas, tenho uma problema (o problema final) no meu projeto, e que eu tenho um Botao eliminar no form, e ele para eliminar pesquisa os ID na base de dados XML, e elimina, mas eu nao estou a consegui porque transforma isto: <?xml version="1.0" encoding="utf-8"?> <musicasdabanda> <musicas> <id>3</id> <nome>111</nome> <compositor>11</compositor> <programautilizado>11</programautilizado> <ano>11</ano> <arranjo>11</arranjo> <tipo>Marcha Normal</tipo> <ficheiro>C:\Users\João Viana\Documents\SFTPautas\PastasDasMusicas\3images.jpg</ficheiro> <pdf>C:\Users\João Viana\Documents\SFTPautas\PastasDasMusicas\31teste.pdf</pdf> </musicas> </musicasdabanda> Nisto: <?xml version="1.0" encoding="utf-8"?> <musicasdabanda> <musicas> </musicas> </musicasdabanda> Ou seja, ele so elimina os childs la dentro, o que eu faço para que isto nao aconteça, nao estou a encontrar nenhuma solunçao e ja pesquisei em muito lado. Espero que me possam ajudar. Deixo ainda aqui o meu codigo: Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim elimina As New XmlDocument elimina.Load(bdFile) Dim nodemdb As XmlNodeList = elimina.SelectNodes("musicasdabanda") Dim nodem As XmlNodeList = elimina.SelectNodes("musicasdabanda/musicas") For Each nodemusica As XmlElement In nodemdb For Each element As XmlElement In nodem Dim id As String = element.SelectSingleNode("id").InnerText If id = labelnumero.Text Then element.RemoveAll() elimina.Save(bdFile) atualizarlist() Exit Sub End If Next Next End Sub Mais uma vez obrigado. PS: Tenho uma malware no PC que me tira os acentos, depois corrijo isso Learning VB.Net HTML C/C++ Link to comment Share on other sites More sharing options...
petvetbr Posted June 10, 2012 at 11:40 AM Report Share #461751 Posted June 10, 2012 at 11:40 AM For Each element As XmlElement In nodem Dim id As String = element.SelectSingleNode("id").InnerText If id = labelnumero.Text Then element.RemoveAll() elimina.Save(bdFile) atualizarlist() Exit Sub End If Next Acho que não estou entendendo o problema, ele está fazendo examente o que você pede, ou seja, pega o elemento música, e o apaga, no element.RemoveAll() Fernando Lage Bastos - MCP/MCTS/MCPD Link to comment Share on other sites More sharing options...
jviana Posted June 10, 2012 at 12:06 PM Author Report Share #461752 Posted June 10, 2012 at 12:06 PM (edited) Nao o apaga, apaga o conteudo, mas ele fica vazio. Eu quero que ele deixe de existir. Eu quero que ele se transforme nisto: <?xml version="1.0" encoding="utf-8"?> <musicasdabanda> </musicasdabanda> Percebem? Edited June 10, 2012 at 09:06 PM by jviana Learning VB.Net HTML C/C++ Link to comment Share on other sites More sharing options...
jpaulino Posted June 11, 2012 at 08:55 AM Report Share #461897 Posted June 11, 2012 at 08:55 AM Tenta assim: Dim xmlFileName As String = "d:\xmlFile.xml" Dim xDoc = XDocument.Load(xmlFileName) xDoc...<musicas>.Remove() xDoc.Save(xmlFileName) Ah, e o resultado final do ficheiro é: <?xml version="1.0" encoding="utf-8"?> <musicasdabanda /> Link to comment Share on other sites More sharing options...
jviana Posted June 11, 2012 at 03:45 PM Author Report Share #462002 Posted June 11, 2012 at 03:45 PM Pois, eu tive assim, mas isso elimina tudo. Se eu tiver isto: <?xml version="1.0" encoding="utf-8"?> <musicasdabanda> <musicas> <id>3</id> <nome>111</nome> <compositor>11</compositor> <programautilizado>11</programautilizado> <ano>11</ano> <arranjo>11</arranjo> <tipo>Marcha Normal</tipo> <ficheiro>C:\Users\João Viana\Documents\SFTPautas\PastasDasMusicas\3images.jpg</ficheiro> <pdf>C:\Users\João Viana\Documents\SFTPautas\PastasDasMusicas\31teste.pdf</pdf> </musicas> <musicas> <id>4</id> <nome>1123w1</nome> <compositor>1defrg1</compositor> <programautilizado>11wsed</programautilizado> <ano>11</ano> <arranjo>1qw1</arranjo> <tipo>Marcha Normal</tipo> <ficheiro>C:\Users\João Viana\Documents\SFTPautas\PastasDasMusicas\3images\teste12.jpg</ficheiro> <pdf>C:\Users\João Viana\Documents\SFTPautas\PastasDasMusicas\31teste\oal.pdf</pdf> </musicas> </musicasdabanda> Retorna isto: <?xml version="1.0" encoding="utf-8"?> <musicasdabanda> </musicasdabanda> E eu quero que ele elimine um node, condicionado ao seu Id. Learning VB.Net HTML C/C++ Link to comment Share on other sites More sharing options...
jpaulino Posted June 11, 2012 at 04:48 PM Report Share #462020 Posted June 11, 2012 at 04:48 PM Então tens o xml mal definido ... devias ter algo como (por exemplo): <musica id="1"> .... </musica> Link to comment Share on other sites More sharing options...
jpaulino Posted June 11, 2012 at 05:04 PM Report Share #462022 Posted June 11, 2012 at 05:04 PM Mas podes sempre fazer assim: Dim xmlFileName As String = "d:\xmlFile.xml" Dim xDoc = XDocument.Load(xmlFileName) Dim result = xDoc...<musicas>.Where(Function(f) f.<id>.Value = 3) If result.Count > 0 Then result.Remove() xDoc.Save(xmlFileName) End If Link to comment Share on other sites More sharing options...
jviana Posted June 11, 2012 at 06:46 PM Author Report Share #462042 Posted June 11, 2012 at 06:46 PM Funcionou, muito obrigado Learning VB.Net HTML C/C++ Link to comment Share on other sites More sharing options...
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