• User

    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


  • User

    suggerimenti?


  • User Newbie

    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).InnerText

    retValue &= "->" & NomeElemento & " = " & ValoreElemento & "<br/>" & vbCrLf

    'Qui ti crei la funzione per salvare i valori nel db..
    'Es.: SalvaRecord(numElemento,NomeElemento,ValoreElemento)
    Next
    Next

            Return retValue
        End Function

  • User

    grazie gentilissimo
    ci prova a salvare nel db e ti faccio sapere
    ciao!


  • User

    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


  • User

    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


  • User

    suggerimenti?