Announcement

Collapse
No announcement yet.

Bestimmte XML Elemente auslesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bestimmte XML Elemente auslesen

    Hallo zusammen,

    ich habe ein kleines Verständnis Problem mit dem lesen von XML Dateien und die Google Ergebnisse zu dem Thema verwirren mich eher anstatt mich zu erhellen -,-

    Ich habe folgendes XML Dokument:

    Code:
    <?xml version="1.0" standalone="yes"?>
    <NewDataSet>
      <KeyValuePairs>
        <ObjectID>000001</ObjectID>
        <Key>GesuchterKey</Key>
        <Value>Gesuchter_Name_1</Value>
      </KeyValuePairs>
      <KeyValuePairs>
        <ObjectID>000002</ObjectID>
        <Key>EinAndererKey</Key>
        <Value>Gesuchter_Name_1</Value>
      </KeyValuePairs>
      <KeyValuePairs>
        <ObjectID>000003</ObjectID>
        <Key>GesuchterKey</Key>
        <Value>>Gesuchter_Name_2</Value>
      </KeyValuePairs>
    </NewDataSet>
    Ich habe einen XML Reader deklariert und möchte nun Werte aus der XML Datei in eine Textbox ausgeben.
    Gesucht ist der im Tag "Value" enthaltene Wert, allerdings nur wenn im "Key" der Wert "GesuchterKey" enthalten ist, ansonsten soll der Node übersprungen werden.

    Könnt Ihr mir einen Tipp geben wie ich die Überprüfung mache ob Key den gesuchten Wert enthält und wie ich dann auf die dazugehörige Value zugreife?

    Ich bin für jeden Fingerzeig dankbar!

  • #2
    http://support.microsoft.com/kb/301220/de
    Christian

    Comment


    • #3
      Hallo Christian,

      schon mal vielen Dank für deine Antwort!
      Mit XPath habe ich auch schon herumprobiert, ich verstehe aber trotzdem noch nicht wie ich, wenn ich eine Liste der Knoten habe, prüfe ob Key den gewünschten Wert enthält und dann den dazugehörigen Wert von "Value" ausgebe.

      Kannst du darauf evtl. für Beginner kurz eingehen?

      Danke im voraus!

      Comment


      • #4
        Du lässt dir per XPath eine Liste aller KeyValuePairs erstellen. Diese gehst du durch und suchst nun unterhalb auch mit XPath den Key und den Value Knoten. Dann prüfst du ob der Key als TextContent "GesuchterKey" hat. Wenn ja hast du ihn gefunden und auch das Value
        Alternativ kannst du direkt nach "GesuchterKey" suchen und bekommst nur diesen Text als Knoten. Dann selektierst du den Parent -> Key-Knoten. Von diesen das Silbling Value.
        Zuletzt editiert von Christian Marquardt; 21.01.2014, 20:12.
        Christian

        Comment


        • #5
          Hallo Christian,

          vielen Dank für deine Hilfe, ich habe es jetzt hinbekommen

          Eine zusätzliche Frage hätte ich noch:

          Ich möchte jetzt nicht nur einen Wert finden sondern mehrere...ist es dabei gängige Praxis wenn ich das wie folgt löse:

          - Iterator auf die Abfrage des zu findenden Wert1 setzen
          - Werte in der While Schleife in die erste Dimension eines Arrays schreiben
          - Iterator auf die Abfrage des zu findenden Wert2 setzen
          - Werte in der While Schleife in die zweite Dimension eines Arrays schreiben

          Danach kann ich dann über den Index des Arrays auf die zusammengehörigen Werte (Wert1 <-> Wert2) zugreifen?

          Comment


          • #6
            http://www.w3schools.com/xpath/xpath_syntax.asp
            Siehe Selecting Several Paths
            Christian

            Comment


            • #7
              Hallo Christian,

              dankle für die Antwort!
              Das hatte ich bereits ausprobiert. Wenn ich den Ausdruck in VB.NET mit | verketten will erhalte ich abeer die Meldung es wäre ein ungültiges Zeichen.
              Die Zeile im Code sieht folgendermaßen aus:

              Code:
              Dim iterator As XPathNodeIterator = nav.[Select]("/NewDataSet/KeyValuePairs[Key='Name']/Value | /NewDataSet/KeyValuePairs[Key='URI']/Value")
              Ich finde in der MSDN leider keine Info ob das Verkettungszeichen in VB.NET ein anderes ist, kannst du mir da noch mal aushelfen?

              Comment


              • #8
                Habe kein VB.NET, aber probiere Or statt |
                Christian

                Comment

                Working...
                X