Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/03/2009, 15:34
Avatar de dadabit
dadabit
 
Fecha de Ingreso: febrero-2009
Ubicación: Coahuila, México
Mensajes: 145
Antigüedad: 16 años, 1 mes
Puntos: 1
Respuesta: Añadir datos al XML

Cita:
Iniciado por Krato Ver Mensaje
Hola a todos.

Resulta que estoy guardando unos valores en XML, pero tengo un problema a la hora de añadir otro registro al XML ya hecho.

El problema es el siguiente:

Creo el XML por primera vez. - Funciona bien

Pero si quiero agregar un dato a ese XML, no lo hace.

Lo que hace es borrarme el xml anterior y me lo llena con los nuevos datos. Pero yo no quiero eso si no que en vez de sobreescribirlos, me los añada como en otro nodo.

Utilizo el siguiente código:

Código:
  Public Sub CrearXML(ByVal NombreXML As String, ByVal nombreAlbum As String, ByVal datos() As datosXML)
        Dim doc As New System.Xml.XmlDocument()

        Dim Albumes As System.Xml.XmlNode = doc.CreateElement("Albumes")



        doc.AppendChild(Albumes)

        Dim Album As System.Xml.XmlNode = doc.CreateElement("Album")
        Dim atr As System.Xml.XmlAttribute = doc.CreateAttribute("Nombre")
        Album.Attributes.Append(atr)
        atr.InnerText = nombreAlbum
        Dim i As Integer = 0
        For x As Integer = 0 To datos.Count - 1

            Dim Data As System.Xml.XmlNode = doc.CreateElement("Imagen")
            Dim atributo As System.Xml.XmlAttribute = doc.CreateAttribute("Nombre")
            Dim atributo2 As System.Xml.XmlAttribute = doc.CreateAttribute("Ruta")
            atributo.InnerText = datos(x).Nombre
            atributo2.InnerText = datos(x).path
            Data.Attributes.Append(atributo)
            Data.Attributes.Append(atributo2)
            Album.AppendChild(Data)
        Next
        i += 1
        Dim a As System.Xml.XmlNode = Album

        Albumes.AppendChild(Album)



        doc.Save("albumes.xml")
    End Sub
¿Me podríais ayudar o decir, como lo debo de hacer para que funcione bien?

Por cierto está en vb.NET

Gracias!

Yo diría que es más fácil así

Código:
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim path = Server.MapPath("~/futbolistas.xml")
        Dim settings As New XmlWriterSettings()
        settings.Indent = True
        settings.NewLineOnAttributes = True
        Using writer As XmlWriter = XmlWriter.Create(path, settings)

            'writer.Formatting = Formatting.Indented

            writer.WriteStartDocument()
            writer.WriteStartElement("futbolistas")

            writer.WriteStartElement("jugador")
            writer.WriteAttributeString("pais", "España")
            writer.WriteElementString("nombre", "David Villa")
            writer.WriteStartElement("equipo")
            writer.WriteString("Valencia C.F.")

            writer.WriteEndElement()
            writer.WriteEndElement()


            writer.WriteStartElement("jugador")
            writer.WriteAttributeString("pais", "Argentina")
            writer.WriteElementString("nombre", "Leo Messi")
            writer.WriteStartElement("equipo")
            writer.WriteString("Barcelona F.C.")

            writer.WriteEndElement()
            writer.WriteEndElement()
            writer.WriteEndElement()

            writer.WriteEndDocument()
            writer.Close()
        End Using
        MsgBox("XML de futbolistas creado")
    End Sub
StartElement es un nodo
AttributteElement es un atributo de ese nodo (entre Start y End)
puedes jugar con Start y EndElement para anidar nodos hijos...

espero que te ayude