Eigentlich hatte Martin Hey genau im richtigen Moment seinen Post zum Thema veröffentlicht.
Aber dann fiel mir ein, dass wenn es einen Vorteil von VB.NET gegenüber c# gibt, dann ja wohl im XML-Bereich.
Ein Imports am Kopf der Seite reicht um den Namespace Global einzufügen.
Das Ganze gepaart mit einem InsertAllOnSubmit habe ich in ein paar wenigen Zeilen alle Categories aus meinem XML-Dokument in die Datenbank importiert.
1 Imports <xmlns="http://www.ticketonline.de/ticketonlineevents/1.0">
2 Imports <xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
4 Partial Class LoadTicketOnline
5 Inherits System.Web.UI.Page
6
7 Protected Sub Page_Load(ByVal sender As Object, _
8 ByVal e As System.EventArgs) Handles Me.Load
9
10 Dim XMLPath As String = Server.MapPath("/LoadticketOnline.XML")
11 Dim x As XDocument = XDocument.Load(XMLPath)
12
13 Response.Write(x.<ticketonlineevents>.<categories>.<category>.Count)
14
15 Dim dbEvents As New dbEventsDataContext
16
17 Dim categories = From p1 In x.<ticketonlineevents>.<categories>.<category> _
18 Select New t_EventCategory With _
19 { _
20 .d_CategoryID_TO = p1.@id.Substring(3), _
21 .d_name = p1.@name, _
22 .d_name_TO = p1.@name _
23 }
24
25 dbEvents.t_EventCategory.InsertAllOnSubmit(categories)
26 dbEvents.SubmitChanges()
27
28 End Sub
29 End Class
Und ein Ausschnitt aus der XML-Datei:
1 <?xml version="1.0" encoding="utf-8"?>
2 <ticketonlineevents xmlns="http://www.ticketonline.de/ticketonlineevents/1.0"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xsi:schemaLocation="http://www.ticketonline.de/ticketonlineevents/1.0/ticketonlineevents.xsd">
5 <meta>
6 <builddate>2009-07-30T07:15:01+02:00</builddate>
7 <source>Datenquell1</source>
8 <language>de</language>
9 </meta>
10 <categories>
11 <category id="cat1000" name="all" />
12 <category id="cat126" name="festival" />
13 <category id="cat129" name="festival-other" />
14 <category id="cat127" name="festival-classics" />
15 <category id="cat128" name="festival-rock-pop" />
16 </categories>
17 </ticketonlineevents>