You are not logged in.

Dear visitor, welcome to Jabaco - Community. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

Da_I_Hoid

Beginner

  • "Da_I_Hoid" started this thread

Posts: 2

Date of registration: Feb 7th 2010

  • Send private message

1

Sunday, February 7th 2010, 1:09pm

XML parsen

Hallo,
ich muss für ein Projekt eine xml-Datei einlesen, weiß aber nicht wie man sowas macht.
Bei den Tutorials für VB wird immer nur auf die msxml Bibliothek verwiesen aber die gibts ja wohl unter Jabaco nicht.
Unter Projekt->Projektverweise hab Ich rt.jar/com/sun/xml gefunden, weis aber nicht wie man das benutzt.
Bin wirklich für jede Hilfe dankbar.

A1880

Intermediate

  • "A1880" is male

Posts: 500

Date of registration: Jan 1st 2009

Location: Hanover, Germany

Occupation: Software Engineer

Hobbies: Hilbert Curves

  • Send private message

2

Sunday, February 7th 2010, 3:55pm

Hallo,
es gibt mehrere grundlegende Richtungen:
1.) Man liest das komplette XML-Dokument in den Speicher und nutzt dabei das "Document Object Model" (DOM).
Unter Google musst du dazu nach "org.w3c.dom" suchen.
Diese Objektstruktur kann man dann durchsuchen, manipulieren, wieder ausgeben, ...
2.) Man verarbeitet das XML-Dokument mit einem Parser und definiert bestimmte "Call-Back"-Routinen,
die z.B. für jeden XML-Tag oder für jedes XML-Attribut aufgerufen werden.
Als Beispiel könntest Du dazu nach "SAXParser" suchen.
Diese Methode hat den Vorteil, dass sie auch für große XML-Dokumente geeignet ist.
Das Dokument wird nicht in den Speicher gelesen sondern "en passant" bearbeitet.
3.) Einfache XML-Dateien kann man auch "zu Fuß" lesen und interpretieren.
Dazu öffnet man die Datei als Text, liest sie zeilenweise und sucht die relevanten Informationen heraus.
Diese Methode ist anfällig, falls sich im Format mal was ändert.
XML wurde ja gerade als universelles Format entwickelt, das änderungsfreundlich ist.

Insgesamt ist das Lesen/Parsen von XML-Dateien ein sehr weites Feld. Ich würde versuchen, geeignete Java-Beispiele
zu finden und die dann auf Jabaco zu übertragen.

Viel Erfolg!

A1880

OlimilO

Intermediate

  • "OlimilO" is male

Posts: 277

Date of registration: Jan 18th 2009

Location: Germany

Occupation: software engineer

  • Send private message

3

Sunday, February 7th 2010, 4:49pm

Hi,
Es würde keinen Sinn machen msxml irgendwie in Jabaco verwendbar zu machen. Am Besten verwendet man die Java Sachen dies schon gibt, unter Java heißts halt bloß bissl anders:
org#w3c#dom bzw. javax#xml
Die Konzepte und Basisklassen sind sich aber trotzdem sehr ähnlich.
@A1880 gut erklärt :)
kleines Bsp zu 1)
braucht CommandButton Command1 und ne TextBox Text1

Jabaco Source

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Option Explicit
Import org#w3c#dom
Import javax#xml#parsers
Dim myXMLFileName As String = "C:\MyXMLFile.xml"
Dim myXMLDocument As org#w3c#dom#Document
Public Sub Form_Load()
   Text1.MultiLine = True
   Text1.HScrollBar = sbShowAsNeeded
   Text1.VScrollBar = sbShowAsNeeded
End Sub
Public Sub Command1_Click()
   If myXMLDocument = Nothing Then
      myXMLDocument = GetXmlFile(myXMLFileName)
   End If
   
   Dim aNode As org#w3c#dom#Node
   aNode = myXMLDocument.getFirstChild
   Text1.Text = aNode.getTextContent
End Sub
Function GetXmlFile(FileName As String) As org#w3c#dom#Document
   GetXmlFile = javax#xml#parsers#DocumentBuilderFactory. _
   newInstance.newDocumentBuilder.parse(New java#io#File(FileName))
End Function


Gruß
OlimilO

This post has been edited 3 times, last edit by "OlimilO" (Feb 7th 2010, 5:20pm)


Da_I_Hoid

Beginner

  • "Da_I_Hoid" started this thread

Posts: 2

Date of registration: Feb 7th 2010

  • Send private message

4

Saturday, February 13th 2010, 11:57am

vielen Dank,
das ist genau was ich brauche.

Rate this thread
WoltLab Burning Board