Modifica elemento xml

di il
4 risposte

Modifica elemento xml

Salve,

vo il seguente file xml

<?xml version="1.0" encoding="utf-8"?>
<Assistiti>
  <Persona>
    <id>1</id>
    <Cognome>Lampa</Cognome>
    <Nome>Dario</Nome>   
    <Citta>Pordenone</Citta>    
  </Persona>
  <Persona>
    <id>2</id>
    <Cognome>La Vespa</Cognome>
    <Nome>Guido</Nome>
    <Citta>Pordenone</Citta>    
  </Persona>
  .
  .
  .
  
</Assistiti>

con il seguente codice provo a modificare la città della persona con id 2 ma purtroppo mi modifica sempre la città della persona con id 1 cioè modifica la città della prima persona del file xml.

Dim MyXML As New XmlDocument()
MyXML.Load(pathFile)
'textbox con il vechcio testo
Dim MyXMLNode As XmlNode = MyXML.SelectSingleNode("//Assistiti/Persona[Citta = 'Pordenone']")

'If we have the node let's change the text
If MyXMLNode IsNot Nothing Then    
    MyXMLNode.ChildNodes(3).InnerText = "Caltanissetta"
    MessageBox.Show("Modifica OK.", "Mio Programma", MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
    'Do whatever
    MessageBox.Show("NON modificato", "Mio Programma", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If

'Save the XML now
MyXML.Save(pathFile)

Mi sapreste indicare come posso modificarlo e nel caso che controllo posso aggiungere per tale scopo?

Grazie.

4 Risposte

  • Re: Modifica elemento xml

    Beh, direi che è normale che il programma si comporti così.
    Con la linea

    Dim MyXMLNode As XmlNode = MyXML.SelectSingleNode("//Assistiti/Persona[Citta = 'Pordenone']")

    tu selezioni una Persona con Citta='Pordenone' e da quel che vedo anche la persona con id=1 ha la città=Pordenone, e quindi SelectSingleNode si ferma al primo che trova, cioè quella con id=1

    Se vuoi modificare la persona con id=2 basta cambiare in

    Dim MyXMLNode As XmlNode = MyXML.SelectSingleNode("//Assistiti/Persona[id='2']")
  • Re: Modifica elemento xml

    02/01/2024 - SirJo ha scritto:


    Beh, direi che è normale che il programma si comporti così.
    Con la linea

    Dim MyXMLNode As XmlNode = MyXML.SelectSingleNode("//Assistiti/Persona[Citta = 'Pordenone']")

    tu selezioni una Persona con Citta='Pordenone' e da quel che vedo anche la persona con id=1 ha la città=Pordenone, e quindi SelectSingleNode si ferma al primo che trova, cioè quella con id=1

    Se vuoi modificare la persona con id=2 basta cambiare in

    Dim MyXMLNode As XmlNode = MyXML.SelectSingleNode("//Assistiti/Persona[id='2']")

    Grazie per esserti interessato a rispondere,

    ma poi dopo aver selezionato la persona con id = 2 come posso cambiagli la città?

  • Re: Modifica elemento xml

    Puoi usare il codice

    MyXMLNode.ChildNodes(3).InnerText = "Caltanissetta"

    anche se personalmente non uso i ChildNodes perchè se un domani cambia anche solo leggermente la struttura del file XML il codice non funziona più.

    Sarebbe meglio utilizzare

    MyXMLNode.SelectSingleNode("Citta").InnerText = "Caltanissetta"
  • Re: Modifica elemento xml

    03/01/2024 - SirJo ha scritto:


    MyXMLNode.SelectSingleNode("Citta").InnerText = "Caltanissetta"

    Ti ringrazio era davvero banale.

Devi accedere o registrarti per scrivere nel forum
4 risposte