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
Linq2Xml Fragen zu Elements()
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

Linq2Xml Fragen zu Elements()

beantworten | zitieren | melden

Hallo, habe schon Google durchsucht aber keine Antowrt auf meine Frage bekommen.

Beispiel:

var oldHnrs = from oldHnr in xOldDoc.Elements("body").Elements("hnr_liste").Elements("hnr")
                              select oldHnr;

Meine Frage ist, ob ich die einzelne Elements() in meinem Beispiel auch zur Laufzeit erzeugen kann, damit ich den Code auch für andere XML benutzen kann oder muss ich diese immer fest in den Quellcode schreiben oder soll ich dafür auf XPath ausweichen?

Vielleicht kann mir ja jemand von euch weiter helfen.
private Nachricht | Beiträge des Benutzers
itstata
myCSharp.de - Member



Dabei seit:
Beiträge: 302
Herkunft: Rostock

beantworten | zitieren | melden

hallo,
was meinst du mit automatisch? also statt dem festen wert für das element eine variable einsetzen? - das würde gehen.
oder meinst du das xmldokument zur laufzeit erzeugen und nicht speichern. das sollte ebenfalls gehen.
private Nachricht | Beiträge des Benutzers
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

Ich meinte damit die einzelne Elements wie im Beispiel die XName("body,"hnr_liste","hnr"......) in einem Array stehen würde.

Im Beispiel ist das teil ja auf 3 Elements beschränkt wenn ich jetzt aber mehr Elements bräuchte was mach ich dann?
private Nachricht | Beiträge des Benutzers
itstata
myCSharp.de - Member



Dabei seit:
Beiträge: 302
Herkunft: Rostock

beantworten | zitieren | melden

ich habs noch nicht ganz verstanden. ich meinte eigentlich das elements() dir eine liste aller gefundenen werte liefert. wenn du ein array in xml-form hast, so bekommst du auch alle elemente zurück.
private Nachricht | Beiträge des Benutzers
gfoidl
myCSharp.de - Team

Avatar #avatar-2894.jpg


Dabei seit:
Beiträge: 6.856
Herkunft: Waidring

beantworten | zitieren | melden

Hallo,
Zitat
Im Beispiel ist das teil ja auf 3 Elements beschränkt wenn ich jetzt aber mehr Elements bräuchte was mach ich dann?
Dann ist das eine neue XML-Struktur und die Abfrage muss angepasst werden. Automatisch geht das nicht.

Möglich ist jedoch sich über die Elements-Auflistung durch das XML rekursiv durchzuhanteln.


mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"
private Nachricht | Beiträge des Benutzers
cpetit
myCSharp.de - Member



Dabei seit:
Beiträge: 54

Themenstarter:

beantworten | zitieren | melden

So, habe das Problem zuerst mal so gelöst:

string sPath = "/body/hnr_liste/hnr/bsnr";
IEnumerable<XElement> xOldDoc= xmlOldDoc.XPathSelectElements(sPath);

geht auch alles soweit.


Wie kann ich jetzt aber auf das Attribute "V" des Elements "hnr" die Where-Klausel setzten?


var oldHnrs = from oldHnr in xOldDoc
              where oldHnr.Element("hnr").Attribute("V").Value == "7301100000"
              select oldHnr;

Bekomme hier immer die Fehlermeldung:
"Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Würde heisen das er das Element("hnr") in der Where-Klausel nicht findet.

Hat jemand einen Tipp?
private Nachricht | Beiträge des Benutzers