| 

.NET C# Java Javascript Exception

4
Folgendes habe ich hier:

For Each a As XmlElement In xdoc.GetElementsByTagName("satz")
'DoSomething
Next

Jetzt springen wir in der Schleife ins Direktfenster:

?a.FirstChild.Name
"mm"
?a.SelectNodes("mm").Count
0

FirstChild gibt es also (mindestens), aber die Knoten lassen sich nicht auswählen.

...und jetzt brauche ich jemanden, der mir den Balken auf den Hinterkopf schmeißt bzw. erklärt, wie das SelectNodes vielleicht doch zum Laufen gebracht werden kann.

Danke!
News:
10.04.2013
muffi 1,4k 1 9
1
Kannst Du das XML-Doc posten, auf dem Du da arbeitest? Zumindest teilweise?
Matthias Hlawatsch 10.04.2013
Das Doc ist 28 MB groß, von daher: auf welche Teile kommt es Dir genau an?
muffi 10.04.2013
Matthias, der Tipp war gut: in dem Teil war im Rootnode ein fehlerhafter Link zu einem Schema, deshalb hat es ihn zerlegt. Nach dem Entfernen des Links geht es! Schade, dass man Kommentare nicht als Lösung markieren kann.
muffi 10.04.2013
http://de.wikipedia.org/wiki/Mäeutik ;-)
Freut mich, daß ich helfen konnte.
Matthias Hlawatsch 10.04.2013
3 Antworten
1
Mittels Linq/Lambda sollte es so gehen:

var mmNodes = a.ChildNodes.OfType<XmlElement>().Where(e => e.Name == "mm");
10.04.2013
Floyd 14,6k 3 9
0
Versuchs mal mit:

a.SelectNodes(".//mm")
10.04.2013
Floyd 14,6k 3 9
Tut es auch nicht. Kann das sein, dass die Probleme entstehen, weil im Roottag ein "-" ist? Das kann ich aber leider nicht beeinflussen und muss es so nehmen, wie es kommt.
muffi 10.04.2013
0
Vielleicht geht es ja so:

foreach (XmlNode n in a.ChildNodes)
{
if (n.Name == "mm")
{
// Do something here
}
}
10.04.2013
multi1209 848 1 8
So hatte ich das vorher gemacht. Nachdem ich mehr Childs als nur "mm" habe, wollte ich das aber eben über einzelne For-Schleifen machen, das empfinde ich als Übersichtlicher. Wenn es nicht anders funzt, muss ich wohl doch wieder über If's gehen.
muffi 10.04.2013
Alternativ kannst du ja nochmal die Funktion GetElementByTagName auf a mit "mm" als Parameter aufrufen, dann solltest du doch alle XMLNodes von "mm" bekommen.
multi1209 10.04.2013
Ja, klar, aber damit bekomme ich auch alle anderen mm's, die in weiteren Unterknoten sind. Das funktioniert leider bei den Daten nur auf einer Ebene, die relativ weit oben ist (so filtere ich ja die überhaupt relevanten Knoten).
muffi 10.04.2013

Stelle deine .net-Frage jetzt!