Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
XML mit Linq rekursiv durchlaufen
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

XML mit Linq rekursiv durchlaufen

beantworten | zitieren | melden

Hallo,
bräuchte mal Hilfe von euch.

Ich möchte gerne eine XML mit Linq rekursiv durchlaufen und stehe total auf dem Schlauch wie ich vorgehen soll.

Fange gerade an mich in Linq einzulesen und deshalb suche ich Hilfe.
private Nachricht | Beiträge des Benutzers
Xynratron
myCSharp.de - Member



Dabei seit:
Beiträge: 1.177

beantworten | zitieren | melden

huhu,

http://weblogs.asp.net/scottgu/archive/2007/08/07/using-linq-to-xml-and-how-to-build-a-custom-rss-feed-reader-with-it.aspx
http://www.aspnetzone.de/blogs/juergengutsch/archive/2007/10/09/101-linq-beispiele-und-weitere-links.aspx
[Hinweis] Wie poste ich richtig?

:-)

Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Zitat von herbivore
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.
private Nachricht | Beiträge des Benutzers
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Zuerst mal danke für die Links.

Komme aber trotzdem nicht weiter. Ich möchte jetzt gerne die Where-Klausel gerne auf das Attribute("V") des Elements("hnr") anwenden.

Habe es so probiert das brachte aber einen Fehler :
where hnr.Element("hnr").Attribute("V").Value == "7310950000"

Einen Tipp für mich?


           try
            {
                var hnrs = from hnr in xml_Doc.Elements("body").Elements("hnr_liste").Elements("hnr").Elements("bsnr")
                           where hnr.Attribute("V").Value == "731095000"
                           select new
                           {
                               vBsnr = hnr.Attribute("V").Value,
                               vtBsnr = hnr.Attribute("VT").Value
                           };

                foreach (var hnr in hnrs)
                {
                    Console.WriteLine(" BSNR V: " + hnr.vBsnr + "  BSNR VT: " + hnr.vtBsnr);
                }
            }
            catch (NullReferenceException ex)
            {
                MessageBox.Show(ex.Message);
            }
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo cpetit

Es wäre nützlich, wenn du sagst was für ein Fehler du bekommst.
Abgesehen davon sieht man das ja jetzt am Code, wobei ich dich auf [FAQ] NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt verweisen kann.

Zerstückle die Abfrage mal auf einzelne Zeilen und nutze den Debugger um zu schauen was null ist, dann überlegst du logisch und behebst den Fehler.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Habe noch ein paar Probleme.

Ich habe zwei xml-Dateien die ich gerne vergleichen will.

Habe bis jetzt folgendes gemacht.

Durchlaufe XML-1 und merke mir bei jedem durchlauf einen Wert den es in der XML auch nur einmal gibt. Dann filter ich mit der Where-Klausel beide XML und schreibe das Ergebnis jeweils in ein neues XElement.

Jetzt wollte ich beide XElement miteinander vergleichen mit "XNodeDocumentOrderComparer" der sagt mir aber das er nur XElemente aus der gleichen XML vergleichen kann. Sofern ich die Fehlermeldung richtig deuten kann.

System.InvalidOperationException {"Ein gemeinsames Vorgängerelement ist nicht vorhanden."}

Gibt es was anderes für die XElemente zu vergleichen?
private Nachricht | Beiträge des Benutzers
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

So das mit dem vergleichen habe ich hinbekommen.

Was ich noch nicht hinbekommen habe ist das durchlaufen aller Elemente eines XElements.

Hat da jemand für mich einen Tipp wie ich das XElement rekursiv durchlaufen kann?
private Nachricht | Beiträge des Benutzers