- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [asp.net vb] Leggere file xml
-
[asp.net vb] Leggere file xml
Buonasera, è da qualche giorno che mi sono imbattuto in un file xml, di questo tipo:
<dataset>
-<nodo1>
-<nodo1A>
<datinodo1A>...</datinodo1A>
<datinodo1A>...</datinodo1A>
</nodo1A>
-<nodo1B>
<datinodo1A>...</datinodo1A>
<datinodo1A>...</datinodo1A>
</nodo1B>
</nodo1>
-<nodo2>
-<nodo2A>
<datinodo2A>...</datinodo2A>
<datinodo2A>...</datinodo2A>
</nodo2A>
-<nodo2B>
<datinodo2A>...</datinodo2A>
<datinodo2A>...</datinodo2A>
</nodo2B>
</nodo2>
</dataset>Per leggere l'intero file xml ho usato queste istruzioni:
Dim path As String = "Directory File xml"
'istanzio il documento
Dim Doc As New XmlDocument()
'lo carico in memoria
Doc.Load(path)
'recupero il nodo root
Dim element As XmlElement = Doc.DocumentElement
'recupero il valore all'interno del primo figlio dell'elemento root
Dim node As XmlNode
For Each node In element.ChildNodes
Response.Write(node.InnerText)
NextQueste istruzioni mi permettono di leggere tutti i nodi dell'intero xml e di stamparle a video, ma se volessi recuperare solo alcuni valori tralasciandone altri quale sarebbe l'istruzione giusta. Io ho provato anche utilizando Xmlreader, ma posso fare un solo confronto e quindi posso prelevare un solo dato.
-
Fare semplicemente il for e controllare finchè non si arriva a quello giusto?
Potresti anche leggerlo in un dataset, tipizzato, quindi specificato prima, e poi usare la funzione select.
-
Il problema non è leggere i nodi, ma i datinodi, con quel for che ho postato leggo tutti i datinodo di ogno nodo, invece io vorrei leggere tutti i nodi, ma solo alcuni datinodo.
-
Beh datinodi sono figli di nodo, quindi li trovi dentro childnotes,
For Each node In element.ChildNodes
Response.Write(node.InnerText)
For Each inner_node In node.ChildNodes
Response.Write(inner_node.InnerText)
Next
Next
-
ok adesso proverò
-
io ti consigliere di usare l'Xpath piuttosto dei cicli..
è piu semplice come manutenibilità di codice e come risorse impiegate è più leggero