|
| Autor |
Nachricht |
Leiche Newbie

Anmeldedatum: 23.06.2008 Beiträge: 1
|
Probleme mit XML
Verfasst am: 21.08.2009, 09:26 |
|
|
Schönen guten Tag, liebe Gemeinschaft. Ich stelle mich erst mal vor: Name: Leiche Beruf: Praktikant Proger seit: 01.03.2008 so muss reichen.
Also ich möchte einen Wissentest (Multiple-Choice-Test) progen. Was es können soll: Maximale Anzahl Fragen bis 50000 (erledigt) bis zu 6 Antworten pro Frage (erledigt) zufällige Fragen mit Schutz vor Doppelten (erledigt) Bestenliste (erledigt) Gesammt- und Einzahlauswertung (erledigt) Frageneditor (halb erledigt)
Nun mein Problem: Die Fragen liegen in einer xml-Datei mit diesem Design:
Visual Basic: [code]
1 Was ist "HTML" ? 3 eine Programmiersprache eine Seitenbeschreibungssprache ein Dienst des Internet 0 0 0 False True False False False False 2 Was versteht man unter "cd" ? 3 eine Programmiersprache ein DOS-Befehl einen Datenträger 0 0 0 False True True False False False
[/code] (AF steht für Anzahl der Antworten)
Ich kann ohne weiteres bereits vorhandene Daten ändern aber ich schaffe es einfach nicht neue Fragen hinzuzufügen. Also mit einem eigendenem Editor. Stehe schon kurz vorm verzweifeln. weil alle Tips die ich im inet gefunden habe nicht klappen wollen. Ich hoffe einer von euch hat eine Idee für dieses Problem. (bitte mit Erklärung und Beispielen bin doch noch jung-progi)
Ich danke euch schon mal vorweg^^ |
|
| |
|
 |
StarTrekkker_ Newbie

Anmeldedatum: 05.12.2007 Beiträge: 8
|
Verfasst am: 22.08.2009, 15:28 |
|
|
Moin Leiche,
Ersteinmal finde ich die Formulierung "Seitenbeschreibungssprache" unpassend, "Auszeichnungssprache" trifft es eher.
Zur Sache:
Ich kenne deinen Editor Quellcode nicht, aber ich schätze du arbeitest mit Arrays und oder Klassen.
Dein XML-Code hat zwar den richtigen Ansatz, ist aber zu statisch, zumindest für meine Empfindung. ich würde das Ganze so gestallten, was neben Speicherplatz auch noch Rechenzeit spart:
| Code: |
<Fragenkatalog>
<Fragenanzahl>1</Fragenanzahl>
<Fragestellung>
<Frage>Was ist HTML?</Frage>
<Antworten Anzahl="3">
<Antwort>eine Programmiersprache</Antwort>
<Antwort>eine Seitenbeschreibungssprache</Antwort>
<Antwort>ein Dienst des Internet</Antwort>
</Antworten>
<Lösung>eine Seitenbeschreibungssprache</Lösung>
</Fragestellung>
</Fragenkatalog>
|
Dann würde ich das alles in eine eigene Klasse verpacken:
| Code: |
Public Class Fragestellung
Public Frage as String
Public Antworten(5) as String
Public Lösung as String
End Class
|
Diese fünf Zeilen Code machen die weitere Verarbeitung zum Kinderspiel:
Du musst, wenn du eine neue Frage im Editor hinzufügst, einfach das Array in dem die Fragen gespeichert sind vergrössern, das machst du mit ReDim:
| Code: |
Dim Fragen() As Fragestellung
Dim TxtArray() as TextBox
Sub Me_Load()
Radios(0) = RadioButton1
Radios(1) = RadioButton2
Radios(2) = RadioButton3
Radios(3) = RadioButton4
Radios(4) = RadioButton5
Radios(5) = RadioButton6
TxtArray(0) = TxtAntwort1
TxtArray(1) = TxtAntwort2
TxtArray(2) = TxtAntwort3
TxtArray(3) = TxtAntwort4
TxtArray(4) = TxtAntwort5
TxtArray(5) = TxtAntwort6
End Sub
Sub Einfügen_Click()
Dim Übergabe() as Fragestellung ' Zwischenspeichern des Fragen Arrays, damit nichts verloren geht.
Übergabe = Fragen
ReDim Fragen(Fragen.Length)
For i as Integer = 0 to Übergabe.Lenght - 1
Fragen(i) = Übergabe(i)
End Sub
Fragen(Fragen.Length - 1) = New Fragestellung
Fragen(Fragen.Length - 1).Frage = TxtFrage.Text
For i as Integer = 0 to 5
Fragen(Fragen.Length - 1).Antworten(i) = TxtArray(i).Text
If Radios(i).Checked Then
Fragen(Fragen.Length - 1).Lösung = TxtArray(i).Text
End If
Next i
End Sub
' XML-Part
Sub XML_Basteln()
Dim Writer As Xml.XmlTextWriter = New Xml.XmlTextWriter("C:\DeineXMLDatei.xml", System.Text.Encoding.UTF8)
With Writer
.Formatting = Xml.Formatting.Indented
.Indentation = 4
.IndentChar = " "
.WriteStartDocument()
.WriteStartElement("Fragenkatalog")
.WriteStartElement("Fragenanzahl")
.WriteString(Fragen.Length)
.WriteEndElement()
For i As Integer = 0 To Fragen.Length - 1
.WriteStartElement("Fragestellung")
.WriteStartElement("Frage")
.WriteString(Fragen(i).Frage)
.WriteEndElement()
.WriteStartElement("Antworten")
.WriteAttributeString("Anzahl", GetAnswers(Fragen(i)))
For j As Integer = 0 To GetAnswers(Fragen(i)) - 1
.WriteStartElement("Antwort")
.WriteString(Fragen(i).Antworten(j))
.WriteEndElement()
Next
.WriteEndElement()
.WriteStartElement("Lösung")
.WriteString(Fragen(i).Lösung)
.WriteEndElement()
.WriteEndElement()
Next
.WriteEndElement()
.WriteEndDocument()
.Flush()
.Close()
End With
End Sub
Function GetAnswers(ByVal F As Fragestellung) As Integer
For j As Integer = 0 To 5
If F.Antworten(j) = Nothing Then
Return j
End If
Next
End Function
|
Ich hoffe, das hilft dir weiter, wenn nicht, stell mal deinen Quellcode hier rein, dann guck ich mir den noch mal an.
StarTrekkker |
|
| |
|
 |
|
|