- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- file xml con asp
-
file xml con asp
Vorrei leggere i dati contenuti in un file xml e memorizzarli in un database mediante una pagina asp.
Il problema è che il file xml non ha una struttura fissa.
Es.
<record>
<id>1</id>
<nome> nome1 </nome>
<cognome> cognome1</cognome>
<piva> piva1 </piva>
</record><record>
<id>2</id>
<nome>nome2 </nome>
<cognome>cognome2 </cognome>
</record><record>
<id>3</id>
<nome>nome3 </nome>
<piva>piva3 </piva>
</record>Avrei bisogno di leggere il file xml e associare ogni elemnto di ogni nodo ad una variabile
(per poi memorizzarla nel database). Se un nodo non contiene un elemento la relativa variabile dovrà essere vuota.
potete aiutarmi?
Grazie
-
suggerimenti?
-
Ciao, se tu hai un file tipo questo:
File: test.xml
<?xml version="1.0" encoding="utf-8"?>
<root>
<record>
<id>1</id>
<nome> nome1 </nome>
<cognome> cognome1</cognome>
<piva> piva1 </piva>
</record>
<record>
<id>2</id>
<nome>nome2 </nome>
<cognome>cognome2 </cognome>
</record>
<record>
<id>3</id>
<nome>nome3 </nome>
<piva>piva3 </piva>
</record>
</root>
Ho creato una funzione che legge i nodi e questo è il risultato:
Nodo(0) Nome = record
->id = 1
->nome = nome1
->cognome = cognome1
->piva = piva1
Nodo(1) Nome = record
->id = 2
->nome = nome2
->cognome = cognome2
Nodo(2) Nome = record
->id = 3
->nome = nome3
->piva = piva3
Esempio di utilizzo:
'litXMLFile è un tag
'<asp:Literal ID="litXMLFile" runat="server">
'</asp:Literal>
'dentro il form
litXMLFile.Text = ReadXML("//root/record", "test.xml")
Funzione
Ti potrai creare un altra funzione SalvaRecord
per salvarti ogni singolo valore
Es:
SalvaRecord(numElemento,NomeElemento,ValoreElemento)
Imports System.Xml
Public Function ReadXML(ByVal XPathQuery As String, ByVal FileName As String) As String
'Esempio di utilizzo (litXMLFile è <asp:Literal ID="litXMLFile" runat="server"></asp:Literal> dentro il form)
'litXMLFile.Text = ReadXML("//root/record", "test.xml")Dim retValue As String = ""
Dim path As String = HttpContext.Current.Server.MapPath(FileName)
Dim Doc As New XmlDocument()
Doc.Load(path)
Dim node As XmlNodeList = Doc.SelectNodes(XPathQuery)For numElemento As Integer = 0 To node.Count - 1
retValue &= "Nodo(" & numElemento & ") Nome = " & node(numElemento).Name & "<br/>" & vbCrLf
For j As Integer = 0 To node(numElemento).ChildNodes.Count - 1
Dim NomeElemento As String = node(numElemento).ChildNodes(j).Name
Dim ValoreElemento As String = node(numElemento).ChildNodes(j).InnerTextretValue &= "->" & NomeElemento & " = " & ValoreElemento & "<br/>" & vbCrLf
'Qui ti crei la funzione per salvare i valori nel db..
'Es.: SalvaRecord(numElemento,NomeElemento,ValoreElemento)
Next
NextReturn retValue End Function
-
grazie gentilissimo
ci prova a salvare nel db e ti faccio sapere
ciao!
-
ciao
ho provato ad utilizzare il codice che mi hai inviato ma mi restituisce un errore. L'ho implementato in una pagina asp su dominio aruba.
é il comando dim nome variabile as string che crea problemi?grazie
-
ciao sono risucito a far funzionare il codice che mi avevi passato grazie mille! adesso nno riesco a creare la funzione di salvataggio di ogni singolo valore nel database. potreste aiutarmi per favore?
grazie
-
suggerimenti?