vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 13.10.10 19:47

Wenn du genau das gleiche machst hast du auch das gleiche Ergebnis.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 16:42

Hallo zusammen,

ich beschäftige mich gerade mit XML und LINQ. Alles eine super interessante Sache und ich mache auch Fortschritte. Habe mir bei Galileo-Computing das OpenBook zu VB2010 zu Gemüte geführt und auch viel hier im Forum und auf anderen Seiten gelesen.
Für Übungszwecke habe ich mir eine kleine XML-Datei erstellt mit der ich ein wenig experimentiere.
<?xml version="1.0" encoding="utf-16"?>
<Wetter>
  <Stadt>
    <Name>Berlin</Name>
    <Temperatur>20</Temperatur>
    <Feuchte>10</Feuchte>
  </Stadt>
  <Stadt>
    <Name>Plauen</Name>
    <Temperatur>10</Temperatur>
    <Feuchte>11</Feuchte>
  </Stadt>
  <Stadt>
    <Name>Hof</Name>
    <Temperatur>15</Temperatur>
    <Feuchte>12</Feuchte>
  </Stadt>
 </Wetter>
Diese möchte ich gerne mit LINQ Abfragen, was im Ansatz auch recht gut und einfach funktioniert.

Private Sub btn_find_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles btn_find.Click
        Dim XmlDoc As New XDocument
        XmlDoc = XDocument.Load("XMl_Test.xml")
 
        Dim Abfrage = From Stadt In XmlDoc.<Wetter>.<Stadt> Where _
          Stadt.<Temperatur>.Value > 10
                  Select Stadt.<Name>
 
        ListBox1.Items.Clear()
 
        For Each Stadt In Abfrage
            ListBox1.Items.Add(Stadt.Value)
        Next
    End Sub
Nun meine Frage: ich würde in der Listbox gerne auch den Namen der Stadt ausgeben, für die gestellte Abfrage zutrifft. Mit den mir bekannten Operanden "&" bzw. "+" kann ich leider weder die Abfrage noch die Ausgabe, der gefundenen Einträge, verbinden.

Kann mir jemand einen Tipp geben wo ich nach schauen muss um dies zu bewerkstelligen?

Vielen Dank!

Beitrag wurde zuletzt am 13.10.10 um 16:43:19 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 18:29

Ich habe in einem Beispiel eine Möglichkeit der Abfrage mit XPath gefunden...nur würde ich gerne wissen ob dies auch mit LINGQ to XML möglich ist.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 18:49

Also irgendwie war ich zu blöde die Syntax im 1.Versuch richtig hinzubekommen...anders kann ich mir nicht erklären das es mit dem folgenden Code funktioniert.
Ich war einfach zu blind, entschuldigt bitte.

Dim Abfrage = From Stadt In XmlDoc.<Wetter>.<Stadt> Where Stadt.<Temperatur>.Value > 20
                   Select Stadt.@Name, Stadt.<Temperatur>.Value, _
                     Stadt.<Feuchte>.Value
 
        ListBox1.Items.Clear()
 
        For Each i In Abfrage
            ListBox1.Items.Add(i.Name & ", " & i.Feuchte & ", " & i.Temperatur)
        Next
als nächstes geht es dann darum, Datensätze einzufügen, zu verändern und zu löschen.
Mal schauen wie weit ich komme.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 13.10.10 19:00

Keine Entschuldigung ist nötig, sowieso versteht kaum jemand hier was du da machst Du könntest ürbigens auch so etwas tun
        Dim Abfrage = From Stadt In XmlDoc.<Wetter>.<Stadt> Where _
          Stadt.<Temperatur>.Value > 10
                  Select Stadt.<Name>.Value & ", " & _
                  Stadt.<Feuchte>.Value & ", " & Stadt.<Temperatur>.Value
 
        ListBox1.DataSource = Abfrage.ToList()

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 19:07

Hey super Danke!

Nur ist das Ergebnis dann in { } dargestellt...bei meiner Version erhalte ich nur die Ergebnisse, was mir persönlich so besser gefällt. Aber danke für den Tipp!

Naja im Grunde lese ich ja "nur" die XML-Datei aus und würde den Inhalt gern kombiniert ausgeben.
Im Ende ist mir das ja gelungen.

Beitrag wurde zuletzt am 13.10.10 um 19:29:48 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 13.10.10 19:39

Anhang:  Anhangl2x.png (233k)  

Du siehst Klammern? Ich sehe keine Klammern...

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 19:44

Ja...bei mir erscheint das Ergebnis in Klammern.
Hab auch ein PNG dazu nur weiß ich nicht, wie ich einen Anhang in den Beitrag einfügen kann.

Ich muss vielleicht noch erwähnen das ich die XML-Datei auf der Festplatte habe und erst lade.

Beitrag wurde zuletzt am 13.10.10 um 19:46:18 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 19:51

ich mache es so

 Dim XmlDoc As New XDocument
        XmlDoc = XDocument.Load("XMl_Test.xml")
        Dim Abfrage = From Stadt In XmlDoc.Descendants("Stadt")
           Select Stadt.@Name, Stadt.<Temperatur>.Value, Stadt.<Feuchte>.Value
 
        ListBox1.Items.Clear()
        ListBox1.DataSource = Abfrage.ToList
Das Ergebnis sind so aus
{Name= Plauen, Temperatur= 10, Feuchte= 11}
.
.
.

Beitrag wurde zuletzt am 13.10.10 um 19:55:26 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 20:00

Hab die Lösung!
Der Name ist Deinem XML-File ein Element und bei mir ein Attribut.
Hab das XML-File aus einem anderen Beispiel, daher kommt das.

Gibt es bei so etwas richtig oder falsch??? Also sollte ein Eintrag wie "Name" ein Attribut oder ein Element sein?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 13.10.10 20:08

Ja, ich habe einen String gebaut mit Select, du eine Structure, was über .ToString() das Ergebnis in Klammern ausgibt. Eine Structure wäre natürlich besser wenn du eher sowas machen willst
        Dim Abfrage = From Stadt In XmlDoc.<Wetter>.<Stadt> Where _
          Stadt.<Temperatur>.Value > 10
                  Select Stadt.<Name>.Value, Stadt.<Temperatur>.Value, _
                  Stadt.<Feuchte>.Value
 
        Dim list = Abfrage.ToList()
        ListBox1.DataSource = list
        ListBox1.DisplayMember = "Name"
        TextBox1.DataBindings.Add("Text", list, "Temperatur")
        TextBox2.DataBindings.Add("Text", list, "Feuchte")

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 13.10.10 20:10

Nee, das hat nichts damit zu tun (ich habe nur Elemente verwendet und keine Attribute, aber im Grunde egal).

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 20:25

ah interessant.
wie sieht die Form dann aus, wenn das Programm läuft?
Ergibt das dann eine zeilenweise Auflistung?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 13.10.10 20:33

Anhang:  Anhangl2x.png (256k)  

Die Liste ist über Databinding an ListBox und zwei TextBoxen gebunden.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 13.10.10 20:38

aaahh...schicke Sache....das geht sogar schon in die Richtung auf die ich es später mal abgesehen habe ;)

Muss ich 2nur" noch die Daten ändern und neue hinzufügen bzw. löschen ;)
Damit werde ich mich dann die kommenden Abenden beschäftigen.

Hab vielen Dank für die Ratschläge und Hinweise!!!

Beitrag wurde zuletzt am 13.10.10 um 20:44:17 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 14.10.10 20:49

Guten Abend noch einmal,

ich versuche nun schon ein Weilchen einen Eintag in der XML-Datei zu ändern bzw. einen neuen hinzuzufügen.
Trotz intensiver Recherche bei Microsoft und in der Hilfe mache ich noch immer etwas falsch. Ich finde leider nirgendwo beschrieben, wie die Syntax für die Befehle zum Löschen bzw. Eintragen genau lauten muss.
Hier mal meine Versuche, mit denen es nicht klappt.

Eintrag einfügen:
 Dim XmlDoc As New XDocument
        XmlDoc = XDocument.Load("XML_Test.xml")
 
        Dim neuerEintrag = New XElement("Stadt",
                                        New XAttribute("Name", "neue Stadt"),
                                        New XElement("Temperatur", "neuerWert"),
                                        New XElement("Feuchte", "neuerWert")
                                        )
 
        neuerEintrag.Add(From Stadt In XmlDoc.Descendants("Stadt")
                             Select Stadt)
 
        XmlDoc.Save("XML_Test.xml")
Eintrag ändern:
 Dim XmlDoc As New XDocument
        XmlDoc = XDocument.Load("XML_Test.xml")
 
        Dim Abfrage = From Stadt In XmlDoc.Descendants("Stadt")
                             Select Stadt.SetElementValue("Temperatur", 20)
Hat nicht jemand vielleicht einen Tipp wo ich vielleicht eine Seite finde wo dies für VB beschrieben ist? Ich will hier ja auch nicht ständig mit meinen Problemen nerven.
Auf den Hilfeseiten von Microsoft finde ich keine für mich ausreichenden Beispiele.


EDIT:
ich habs jetzt nochmal damit probiert, ich denke das ist schon etwas richtiger, funktioniert leider immer noch nicht
Dim XmlDoc As New XDocument
        XmlDoc = XDocument.Load("XML_Test.xml")
 
        Dim neuerEintrag = New XElement("Stadt",
                                        New XAttribute("Name", "neueStadt"),
                                        New XElement("Temperatur", "neuerWert"),
                                        New XElement("Feuchte", "neuerWert")
                                      )
        XmlDoc.Add(neuerEintrag.Elements("Stadt"))
        XmlDoc.Save("XML_Test.xml")


Beitrag wurde zuletzt am 14.10.10 um 21:14:42 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 14.10.10 21:52

Also die XML Datei wird durch den Code schon in irgendeiner Weise verändert nur leider kommt kein neuer Eintrag dazu. Ich kann das mit Notepad++ nachvollziehen. Da bekomme ich nach dem Versuch einen Eintrag hinzuzufügen die Meldung das die Datei geändert wurde.
So schwer kann das mit dem Einfügen und Ändern doch nicht sein...ich hab wohl nen mächtiges Brett vorm Kopf.

 Dim XmlDoc As New XDocument
        XmlDoc = XDocument.Load("XML_Test.xml")
 
        Dim neuerEintrag = New XElement("Stadt",
                                        New XAttribute("Name", "neueStadt"),
                                        New XElement("Temperatur", "neuerWert"),
                                        New XElement("Feuchte", "neuerWert")
                                      )
        XmlDoc.Add(neuerEintrag)
        XmlDoc.Save("XML_Test.xml")
Bei dem Versuch bekomme ich die Fehlermeldung das dadurch ein falsch strukturiertes Dokument entstehen würde.
Das Dokument hat noch den gleichen Aufbau wie bei den Beiträgen von gestern.

Muss da noch eine Angabe hinein, wo das Element eingefügt werden soll???? Muss man da vorher noch eine Abfrage machen???

Beitrag wurde zuletzt am 14.10.10 um 22:02:24 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 14.10.10 22:08

        XmlDoc.<Wetter>.<Stadt>.Last.AddAfterSelf(neuerEintrag)
 
        Dim Abfrage1 = From Stadt In XmlDoc.<Wetter>.<Stadt> Where _
          Stadt.<Name>.Value = "neue Stadt" Select Stadt
 
        Abfrage1.First.<Temperatur>.Value = 101
zB.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 14.10.10 22:18

Oh mann!!!!....danke wieder einmal....es geht sogar ohne die Abfrage danach...der Ort ist halt schon wichtig...

stelle ich mich nur so doof an oder woran liegt das? die Erklärungen von MS sind immer etwas dürftig und halt für Profis gemacht (meine Meinung). So ne schicke Übersicht mit einfachen Beispiele, so wie Du das postest, wäre mal ideal.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 15.10.10 12:09

Kennst du die 101 Beispiele? http://msdn.microsoft.com/de-de/vbasic/bb688088.aspx.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: Grimsey
Datum: 15.10.10 13:45

Nein die kenne ich leider nicht.
Dein Link führt mich immer wieder auf diesen Beitrag hier
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: LINQ to XML 
Autor: ModeratorDaveS (Moderator)
Datum: 15.10.10 14:35

Link korrigiert.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel