ho creato la funzione che legge i nodi di un file xml e li inserisce nel database access
File xml:
codice:
<?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>
File Caricaxml.aspx
codice:
<%@ Page Language="VB" debug="true"%>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script runat="server">
Dim objConnection As OleDbConnection
Dim myDataAdapter as OleDbDataAdapter
Dim myDataSet as DataSet = new DataSet()
Dim myDataRow As DataRow
objConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("\mdb-database\prova5.mdb") & ";")
myDataAdapter = new OleDbDataAdapter("Select * from Product",objConnection)
Sub ButtonClick(sender As Object, e As EventArgs)
litXMLFile.Text = ReadXML("//root/record", "test.xml")
End Sub
Public Function ReadXML(ByVal XPathQuery As String, ByVal FileName As String) As String
Dim retValue As String = ""
Dim path As String = HttpContext.Current.Server.MapPath(FileName)
Dim Doc As System.Xml.XmlDocument = New System.Xml.XmlDocument()
Doc.Load(path)
Dim node As System.Xml.XmlNodeList = Doc.SelectNodes(XPathQuery)
For numElemento As Integer = 1 To node.Count - 1
retValue &= "Nodo(" & numElemento & ") Nome = " & node(numElemento).Name & "
" & 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 & "
" & vbCrLf
Dim objConnection As OleDbConnection
Dim myDataAdapter as OleDbDataAdapter
Dim myDataSet as DataSet = new DataSet()
Dim myDataRow As DataRow
objConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("\mdb-database\prova5.mdb") & ";")
myDataAdapter = new OleDbDataAdapter("Select * from Product",objConnection)
Dim myDataRowsCommandBuilder as OleDbCommandBuilder = new OleDbCommandBuilder(myDataAdapter)
myDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
myDataAdapter.Fill(myDataSet, "Product")
myDataRow = myDataSet.Tables("Product").NewRow()
myDataRow(NomeElemento) = ValoreElemento
myDataSet.Tables("Product").Rows.Add(myDataRow)
myDataAdapter.Update(myDataSet, "Product")
Next
Next
Return retValue
End Function
</script>
<html>
<head id="Head1" runat="server">
<title>Single-File Page Model</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal ID="litXMLFile" runat="server" >
</asp:Literal>
<asp:Button id="Button1"
Text="Carica"
OnClick="ButtonClick"
runat="server"/>
</div>
</form>
</body>
</html>
tale funzione inserisce i dati nel database ma aggiunge una riga per ogni figlio del nodo xml.
io vorrei
record1: nome1 cognome1 piva1
invece la funziona fa:
record1: nome1
record2: cognome1
record3: piva1
dove sbaglio? grazie