Laden...

Linq2Xml Fragen zu Elements()

Erstellt von cpetit vor 14 Jahren Letzter Beitrag vor 14 Jahren 892 Views
C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 14 Jahren
Linq2Xml Fragen zu Elements()

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.

I
302 Beiträge seit 2008
vor 14 Jahren

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.

C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 14 Jahren

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?

I
302 Beiträge seit 2008
vor 14 Jahren

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.

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo,

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!"

C
cpetit Themenstarter:in
54 Beiträge seit 2007
vor 14 Jahren

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?