none
Seme va al ultimo node y no modifica con el que coincide RRS feed

  • Pregunta

  • Buenas estoy buscando por nombre de nodo pero no para en el que coincide se va al ultimo y entonces no me modifica

    el contenido del nodo

    este es el archivo xml

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Collection>
      <Book>
        <Nombre>Rojo</Nombre>
        <Genre>Birra</Genre>
        <ibus>25</ibus>
      </Book>
      <Book>
        <Nombre>Azul</Nombre>
        <Genre>Lager</Genre>
        <ibus>Birra</ibus>
      </Book>
    </Collection>

    Gracias

    Dim Documentoxml As XmlDocument
            Dim nodelist As XmlNodeList
            Dim node As XmlNode
            Documentoxml = New XmlDocument
            Documentoxml.Load("books.xml")
            nodelist = Documentoxml.SelectNodes("/Collection/Book")
            For Each node In nodelist
                If node.FirstChild.InnerText = ComboBox1.Text Then
                    ' node.FirstChild.InnerText = "salvi"
                    MsgBox(node.LastChild.Name)
                    If node.LastChild.Name = "Genre" Then
                        node.LastChild.InnerText = TextBox1.Text
                        Exit For
                    End If
                End If
            Next
            Documentoxml.Save("books.xml")


    miércoles, 1 de junio de 2016 12:41

Todas las respuestas

  • Creo que tienes un lío con los nodos y los hijos. La primera consulta con XPATH the debe devolver los dos nodos <Book>. Cuando en el bucle preguntas por el FirstChild, eso devuelve el nodo <Nombre>. Y el InnerText a la primera iteración devuelve Rojo y a la segunda Azul (que no sé si son los valores que tienes en el ComboBox1, si no son esos no se entiende qué quieres hacer). Después hay un if que pregunta por el LastNode, que siempre es <ibus>, y luego pregunta si su Name es "Genre" (que nunca lo es, siempre es "ibus"), así que nunca se ejecutará el cambio del InnerText.
    miércoles, 1 de junio de 2016 16:37