173 messaggi dal 16 giugno 2001
Ciao ho la necessità di leggere un xml e in base alla presenza e meno di un nodo aggiungerlo oppure no.
Il codice sotto me lo inserisce anche se esiste, evidentemente sbaglio qualcosa.

Grazie per l'aiuto



 

codice:
Private Sub controllonodi()

Dim miofile As String = Path.Combine("c:\pippo", "ticket.xml")

Dim doc As New XmlDataDocument()

 doc.Load(miofile)
Dim element As XmlElement = doc.DocumentElement

Dim node As XmlNode

For Each node In element.ChildNodes
If node.Name.Equals("dataservizio") = True Then

Else

node = doc.CreateNode(XmlNodeType.Element, "dataservizio", "")

node.InnerText = "0000"

node.AppendChild(element)

End If

Next
doc.Save(miofile)

End Sub
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Alex,

alex71 ha scritto:

Il codice sotto me lo inserisce anche se esiste

Dato che c'è un ciclo ForEach, penso che l'elemento dataservizio ti venga aggiunto non solo una, ma più volte, in base al numero dei ChildNodes.

Dovresti sostituire il ForEach con un'espressione che ti restituisca l'elemento dataservizio, se presente.Poi devi valutare se l'elemento è stato trovato o meno, ed agire di conseguenza.
Prova con questo codice, anche se vado un po' alla cieca. Dovresti postare il contenuto-tipo del tuo file xml.
Private Sub controllonodi()

    Dim miofile As String = Server.MapPath("~/App_Data/XMLFile.xml")

    Dim doc As New XmlDocument()
    doc.Load(miofile)

    'con SelectSingleNode vado a selezionare l'elemento chiamato "dataservizio"
    Dim dataServizio = doc.DocumentElement.SelectSingleNode("dataservizio")

    'Se SelectSingleNode ha restituito Nothing, allora vuol dire che l'elemento non esisteva
    If dataServizio Is Nothing Then
        Dim node As XmlNode = doc.CreateNode(XmlNodeType.Element, "dataservizio", "")
        node.InnerText = "0000"
        doc.DocumentElement.AppendChild(node)
    End If

    doc.Save(miofile)

End Sub


ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.