Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten
Autor
Nachricht
Leiche
Newbie
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
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
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB.NET] Fragen - Antworten

Tags: visual basic, xml

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Wichtig: [Ebook] jetzt lerne ich Visual Basic 6 5067 02.06.2010, 13:55
Keine neuen Beiträge Wie kann ich mich bei euch anmelden?? 916 20.05.2002, 01:28
Keine neuen Beiträge Eine kleine Frage an euch.. 1023 30.09.2007, 09:57
Keine neuen Beiträge Microsoft Visual Basic 1275 28.01.2007, 00:59
Keine neuen Beiträge Visual Basic.. Version?? 1230 22.01.2007, 18:23
 


[ Time: 0.0916s ][ Queries: 83 (0.0232s) ][ GZIP on - Debug on ]