xml durchsuchen

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Rinecamo.

    xml durchsuchen

    Hallo

    kann mir jemand helfen?
    Nachdem ich lange google durchsucht hatte, bin ich jetzt an einem punkt angekommen
    wo mir nur vb paradise helfen kann.
    Also nun hier meine Frage

    Meine Form hat zwei Textboxen und einen Button
    nun möchte ich in die obere Box einen Text eigeben <Text>
    und in der unteren Box soll nach dem drücken des Buttons ein andere Text erscheinen <result>
    Diese Daten soll aus einer xml Datei bezogen werden.

    <?xml-version="1.0"?>

    <TestDatei>

    <Text>Hallo</Text>

    <result>Tschau</result>

    </TestDatei>

    Wie kann ich nun eine XML Datei so Durchsuchen?
    Irgend wie konnte mir bisher niemand so wirklich helfen .

    Wäre über Hilfe sehr Dankbar, vil. hat jemand ja sowas ähnliches schon mal Programmiert

    Besten Dank :)
    Ich hoffe, mit meinem Code hab ich dein Problem gelöst. Wenn nicht, hab ichs falsch verstanden.

    VB.NET-Quellcode

    1. Imports System.Xml
    2. Public Class Form1
    3. Dim InnerText As String
    4. Dim XMLDoc As New XmlDocument
    5. Dim Node As XmlNode
    6. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    7. If TextBox1.Text = "Hallo" Then
    8. XMLDoc.Load("C:\Users\BlaBla\Desktop\text.xml")
    9. Node = XMLDoc.SelectSingleNode("/TestDatei/result")
    10. InnerText = CStr(Node.InnerText)
    11. MessageBox.Show(InnerText)
    12. End If
    13. End Sub
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. XMLDoc.Load("C:\Users\BlaBla\Desktop\text.xml")
    16. Node = XMLDoc.SelectSingleNode("/TestDatei/Text")
    17. InnerText = CStr(Node.InnerText)
    18. RichTextBox1.Text = CStr(InnerText)
    19. End Sub
    20. End Class
    hmm dann habe ich die Frage falsch gestellt anscheint
    also dies ist meine Form


    Hier eine Beispiel xml Datei


    <?xml version="1.0" encoding="ISO-8859-1"?>
    <CATALOG>
    <Test>
    <Frage>Tasse</Frage>
    <Antwort>Becher</Antwort>
    </Test>
    <Test>
    <Frage>Dach</Frage>
    <Antwort>Boden</Antwort>
    </Test>
    .
    .
    .
    </CATALOG>

    so nun soll wenn man in die Frage( TextBox1) Tasse eingibt / Drücken des Go buttons
    in der Antwort (TextBox2) Becher erscheinen

    Das soll das Tool nur können, leider scheint es keine richtige lösung zu geben für das gezielte durchsuchen einer xml datei
    Oder vil. doch ? Ich würde mich freuen

    Besten Dank
    Ehmmm, ja das kannst du mit dem Code den ich gepostet hab!
    Suchen, kannste da glaub ich sowieso nicht direkt, da du alle Antworten und Test's gleich benennst.
    Mach es lieber so:

    Test
    Antwort
    Test2
    Antwort2


    Wenn du jetzt noch ein bisschen rum experimentierst schaffste das mit dem Code.
    Mach es lieber so:

    Test
    Antwort
    Test2
    Antwort2
    Das verstößt gegen so ziemlich alle XML-Richtlinien, die es gibt. :D
    Leider hab ich gerade keinen funktionierenden Code parat, ich wollte das nur gesagt haben, bevor der TE deinen Ansatz auch noch ausprobiert.

    Samus Aran schrieb:



    Das verstößt gegen so ziemlich alle XML-Richtlinien, die es gibt. :D
    Leider hab ich gerade keinen funktionierenden Code parat, ich wollte das nur gesagt haben, bevor der TE deinen Ansatz auch noch ausprobiert.
    Wusste ich nicht sorry :D ...
    Kenn mich mit XML nicht so aus.
    jor schade das dass nicht geht mit
    <Test>
    Frage
    Antwort
    </Test>
    <Test>
    Frage
    Antwort
    </Test>

    Nicht mal mit einer Schleife ,wo denn die eingabe derTextBox1 mit dem Inhalt von <Frage> </Frage> verglichen wird..
    ?
    Vil. kennt sich jemand ausm Forum mit xml im bezug auf VB gut aus, dann bitte hier posten
    Jetzt bin ich aber mal gespannt wies denn geht, hoffe jemand hat da was parrat :)

    Besten Dank
    Mhh, denke schon das das klappt...
    Ist jetzt nur ne theorie, aber du könntest ja nach der Childnode suchen die den
    Text in TXTBox1 enthält, und dann in die Textbox2 den Text von dem nächsten Childnode tun.
    Hab vielleicht ne Lösung.

    VB.NET-Quellcode

    1. Dim doc as XmlDocument = new XmlDocument()
    2. doc.Load("C:\Users\*******\Desktop\text.xml")
    3. Dim root As XmlElement = doc.DocumentElement
    4. Dim elemList As XmlNodeList = root.GetElementsByTagName("Test")
    5. Dim i As Integer
    6. For i = 0 To elemList.Count - 1
    7. ListBox1.Items.Add(elemList.ItemOf(i).InnerXml)
    8. Next


    Wenn du jetzt nochn bisschen was dazu tust, wird es denke ich mal klappen.
    jor bloß wie? bin ja leider blutiger Anfänger in VB.net :whistling: brauch das aber leider für die schule für so ein Projekt :(
    Hmm naja werde ich wohl weiter googlen müssen
    bis montag -.-

    Das war schon gar nicht mal so schlecht

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.Xml
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Dim xmlFile As XmlReader
    5. xmlFile = XmlReader.Create("Product.xml", New XmlReaderSettings())
    6. Dim ds As New DataSet
    7. Dim dv As DataView
    8. ds.ReadXml(xmlFile)
    9. dv = New DataView(ds.Tables(0))
    10. dv.Sort = "Product_Name"
    11. Dim index As Integer = dv.Find("Product2")
    12. If index = -1 Then
    13. MsgBox("Item Not Found")
    14. Else
    15. MsgBox(dv(index)("Product_Name").ToString() & " " & dv(index)("Product_Price").ToString())
    16. End If
    17. End Sub


    Gut wäre nett wenn mir jemand mittels eines codes helfen könnte und wenns geht beschrieben, ist aber nicht umbedingt notwendig

    Danke jetzt schon mal :)
    Komm im Moment aber iwie nicht weiter. ^^

    Edit:

    Wow, war eig. ziemlich einfach mit den Code :D

    Dieser Code müsste dein Problem eig. lösen:

    VB.NET-Quellcode

    1. Dim xmlFile As XmlReader
    2. xmlFile = XmlReader.Create("C:\Users\*****\Desktop\text.xml", New XmlReaderSettings())
    3. Dim ds As New DataSet
    4. Dim dv As DataView
    5. ds.ReadXml(xmlFile)
    6. dv = New DataView(ds.Tables(0))
    7. dv.Sort = "Frage"
    8. Dim index As Integer = dv.Find(TextBox1.Text)
    9. If index = -1 Then
    10. MsgBox("Keine Antwort verfügbar")
    11. Else
    12. TextBox2.Text = dv(index)("Antwort").ToString()
    13. End If

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Rinecamo“ ()