12 messaggi dal 19 giugno 2006
ciao a tutti...
ho un file xml di questo tipo:

<?xml version="1.0"?>
<Root>
<Intestazione>
<CodAppello Value="29" />
<Data Value="19/09/2006" />
<Sede Value="camerino" />
</Intestazione>
<Corpo>
<RigheTotali Value="1" />
<Riga1 Value="ciao" />
</Corpo>
</Root>


e devo aggiornare il nodo RigheTotali. ho scritto la seguente funzione:

codice:

Public Function updateNodo(ByVal nodo As String, ByVal attr As String, ByVal newval As String) As String
...
Dim modified As Boolean = False
doc = New XmlDocument
doc.Load(path)
reader = New System.Xml.XmlTextReader(path)
Do While (reader.Read)
Select Case reader.NodeType
Case XmlNodeType.Element
If String.Compare(reader.Name, nodo) = 0 Then
node = doc.ReadNode(reader)
node.Attributes(attr).Value = newval
modified = True
End If
End Select
Loop
...


richiamata nel seguente modo:

codice:
...
nr += 1
str = file.updateNodo("RigheTotali", "Value", nr)
...


il problema è ke non ho nessun errore ma il valore di RigheTotali rimane semper ad 1.
perchè? è errata la funzione di update, vero? se si, dove sbaglio?

grazie a tutti
12 messaggi dal 19 giugno 2006
praticamente sto parlando da sola!!!

cmq non mi sono spiegata bene, la funzione sopra indicata non è che non mi aggiorna il nodo, non lo trova proprio!!! modified infatti mi rimane a false!!

cmq ho provato a scrivere una nuova funzione... in questo caso riesco a trovare il nodo ma il valore dell'attributo non viene modificato. la nuova funzione è la seguente:

codice:

Public Function updateNodo(ByVal padre As String, ByVal nodo As String, ByVal attr As String, ByVal newval As String) As String
...
Dim root As XmlElement = doc.DocumentElement
node = root.SelectSingleNode(nodo)
Dim str As String
For Each a In root.ChildNodes
If a.Name.Equals(padre) Then
node = a
For Each b In node.ChildNodes
If b.Name.Equals(nodo) Then
b.Attributes(attr).Value = newval
modified = True
End If
Next
End If
Next
...


richiamando la funzione nel seguente modo:

str = file.updateNodo("Intestazione", "RigheTotali", "Value", 45)

in questo caso non ho nessun tipo di errore ma il valore del nodo non cambia:

<RigheTotali Value="1" />

x'? grazie a tutti

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.