Foros del Web » Programación para mayores de 30 ;) » .NET »

Por que me deja un tag vacio y no me elimina

Estas en el tema de Por que me deja un tag vacio y no me elimina en el foro de .NET en Foros del Web. quiero eliminar un nodo de un xml y consigo eliminar lo que son los subnodos me explico tengo el siguiente xml Código HTML: <agenda usuario= ...
  #1 (permalink)  
Antiguo 09/03/2006, 07:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
Por que me deja un tag vacio y no me elimina

quiero eliminar un nodo de un xml y consigo eliminar lo que son los subnodos me explico
tengo el siguiente xml

Código HTML:
<agenda usuario="javier allende">
  <contacto>
    <nombre>javier </nombre>
    <apellidos>allende astigarraga</apellidos>
    <mail>[email protected]</mail>
  </contacto>

 <contacto>
    <nombre>juan </nombre>
    <apellidos>perez lima</apellidos>
    <mail>[email protected]</mail>
  </contacto>
 </agenda> 
Código:
Public Sub eliminarUsuario(ByVal nombre As String)
        Dim nnombre As String
        Dim doc As New XmlDocument
        Dim nodo As XmlNode
        Dim nodoEncontrado As XmlNode
        Dim nlista As XmlNodeList
        Dim i As Integer
        i = 0
        doc.Load("agendaUsuario.xml")
        nlista = doc.GetElementsByTagName("contacto")
        For Each nodo In nlista

            nnombre = nodo.Item("nombre").InnerText + "  " + nodo.Item("apellidos").InnerText + " - " + nodo.Item("mail").InnerText
            If (nnombre.Equals(nombre)) Then
                nlista.Item(i).RemoveAll()
            End If
            i = i + 1
        Next
        doc.Save("agendaUsuario.xml")
    End Sub
y el resultado si hemo shecho correctamente la seleccion
Código HTML:
<agenda usuario="javier allende">
  <contacto>
    <nombre>javier </nombre>
    <apellidos>allende astigarraga</apellidos>
    <mail>[email protected]</mail>
  </contacto>

 <contacto>
     </contacto>
 </agenda> 
como puedo hacer para eliminar el tag contactos he probado con nodo.removeAll() y nada y si lo hago con el nodolista tampoco


gracias
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
  #2 (permalink)  
Antiguo 09/03/2006, 14:08
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Si te fijas la documentación del método RemoveAll, ahí no dice en ningún lado que borra el nodo actual...

En todo caso, cambia:
Código:
If (nnombre.Equals(nombre)) Then
    nlista.Item(i).RemoveAll()
End If
por:
Código:
If (nnombre.Equals(nombre)) Then
    nodo.ParentNode.RemoveChild(nodo)
End If
Saludos
PS. Sería más fácil si usas xpath para hacer la búsqueda...
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #3 (permalink)  
Antiguo 10/03/2006, 02:59
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años
Puntos: 1
Gracias ahora pruebo con ello, lo del xpath lo habia pensado pero entonces antes tengo q hacer que en el nombre que paso por parametro compararlo con 3 valores distintos con lo cual no veo la diferencia

un saludo y gracias
__________________
Dios creo un equipo perfecto a los demas los lleno de extranjeros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:21.