Ir para conteúdo
Fórum Script Brasil
  • 0

Excluir Nodes Do Xml No Vb


abertoletti

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

Eu tenho o seguinte XML:

<?xml version="1.0" encoding="ISO-8859-1" ?>

- <CDS>

- <CD>

<CodCd>1</CodCd>

<Banda>Dream Theater</Banda>

<Titulo>Train Of Thought</Titulo>

<AnoCD>2003</AnoCD>

<AnoCompra>2004/01/10</AnoCompra>

<Musicas>7</Musicas>

<Capa />

<Comentario />

</CD>

- <CD>

<CodCd>2</CodCd>

<Banda>Dream Theater</Banda>

<Titulo>Live At Budokan</Titulo>

<AnoCD>2004</AnoCD>

<AnoCompra>2005/03/02</AnoCompra>

<Musicas>15</Musicas>

<Capa />

<Comentario>R</Comentario>

</CD>

</CDS>

Eu teria que fazer um selectnodes no <CDS> e depois usar o removeChild no <CD>?

Quando eu faço isso, só aparecem 2 métodos (Reset e NextNode) e 2 propriedades (Item e Lenght)

Link para o comentário
Compartilhar em outros sites

  • 0
Eu tenho o seguinte XML:

<?xml version="1.0" encoding="ISO-8859-1" ?>

- <CDS>

- <CD>

<CodCd>1</CodCd>

<Banda>Dream Theater</Banda>

<Titulo>Train Of Thought</Titulo>

<AnoCD>2003</AnoCD>

<AnoCompra>2004/01/10</AnoCompra>

<Musicas>7</Musicas>

<Capa />

<Comentario />

</CD>

- <CD>

<CodCd>2</CodCd>

<Banda>Dream Theater</Banda>

<Titulo>Live At Budokan</Titulo>

<AnoCD>2004</AnoCD>

<AnoCompra>2005/03/02</AnoCompra>

<Musicas>15</Musicas>

<Capa />

<Comentario>R</Comentario>

</CD>

</CDS>

Eu teria que fazer um selectnodes no <CDS> e depois usar o removeChild no <CD>?

Quando eu faço isso, só aparecem 2 métodos (Reset e NextNode) e 2 propriedades (Item e Lenght)

Exato. Veja esse exemplo abaixo, ele remove o CD de código 1 (ficando apenas o 2, no caso desse XML que você postou, que chamei de "teste.xml") e grava o resultado em "teste2.xml":

    Dim xml As New DOMDocument
    Dim cds As IXMLDOMNode
    Dim seleção As IXMLDOMNodeList
    Dim cd As IXMLDOMNode
    Dim campos As IXMLDOMNodeList
    Dim campo As IXMLDOMNode
    
    If xml.Load("teste.xml") Then
        Set cds = xml.selectSingleNode("CDS")
        Set seleção = xml.selectNodes("CDS/*")
        For Each cd In seleção
            Set campos = cd.childNodes
            For Each campo In campos
                'Debug.Print campo.nodeName & "=" & campo.nodeTypedValue
                If campo.nodeName = "CodCd" And campo.nodeTypedValue = 1 Then
                    cds.removeChild cd
                End If
            Next campo
        Next cd
    End If
    xml.save "teste2.xml"

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Eu consegui também hehehehe acabei de fazer um que deu certo e vim postar aqui mas você já tinha resolvido. Obrigado pela ajuda.

Vou postar o meu caso alguém precise também.

Eu acabei jogando o código do CD como um atributo da node CD, removendo a ChildNode "CodCd".

Private Sub cmdExcluir_Click()
Dim objDOMCD as DOMDocument
Dim objNodes As IXMLDOMNodeList
Dim objElemento As IXMLDOMNode
Dim objChildElement As IXMLDOMElement
  
  Set objDOMCD = New DOMDocument
  objDOMCD.resolveExternals = True
  objDOMCD.validateOnParse = True
  objDOMCD.async = False
  
  If Not objDOMCD.Load(App.Path & "\ccd.xml") Then
    Exit Sub
  End If

  Set objNodes = objDOMCD.selectNodes("CDS/CD")
  
  For Each objElemento In objNodes
    If objElemento.Attributes(0).Text = msgCd.TextMatrix(msgCd.Row, 0) Then
       objDOMCD.documentElement.removeChild objElemento
       objDOMCD.Save (App.Path & "\ccd.xml")
    End If
  Next objElemento

  AtualizaGrid
    
End Sub

Por enquanto deu certo, mas vou tentar o seu também pra ver qual fica melhor.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...