Autor Beitrag
implicit
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Fr 11.09.09 10:43 
Hallo,

Nach langer Zeit benoetige ich mal wieder nen kleinen Denkanstoss :)

Folgender Sachverhalt:

Ich lese eien XML Datei ein und parse mit "Descendants" durch bestimmte nodes und vergleiche die mit einem bestimtmen Wert.

ausblenden C#-Quelltext
1:
2:
var SystemHottopics = from HTTopics in XMLhot.Descendants("Server")
                                      where HTTopics.Attribute("Typ").Value == inputdata


nun muss ich die Abfrage mit einem "select" beenden.

ausblenden C#-Quelltext
1:
select new { HTT = HTTopics.Element("Hottopics").Element("Topic").Attribute("Description").Value };					


Danach gebe ich diese daten via ananymous variable and foreach schleife an die listbox.
ausblenden C#-Quelltext
1:
2:
3:
                foreach (var HTTopics in SystemHottopics)
                    if (!hottopicListbox.Items.Contains(HTTopics.HTT))
                        hottopicListbox.Items.Add(HTTopics.HTT);


Leider sehe ich aber nur das erste node - attribut.

Muss ich die abfrage recursen irgendwie oder gibts andere tricks.. ?
statt select new vielleicht irgend ne schleife oder sowas ?

Hier noch nen auszug aus der XML struktur... vielleicht hat ja Kha ne idee.

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
 <Server Typ="DL320 G2">
    <Hottopics>
      <Topic Description="Hottopic 1" />
    <Topic Description="Hottopic 2" />
    </Hottopics>
  </Server>


Danke schon mal fuer Tips, Hinweise usw.

Gruss Steffen
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 11.09.09 18:40 
user profile iconimplicit hat folgendes geschrieben Zum zitierten Posting springen:
vielleicht hat ja Kha ne idee.
*g*

Gibt es denn zu einer Typenbezeichnung wirklich mehrere Server-Nodes? Wenn nein, spricht nichts gegen Single aus dem letzten Thread, ansonsten:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
IEnumerable<string> topicDescs =
  from server in XMLHot.Descendants("Server")
  where server.Attribute("Typ") == inputData
  from topic in server.Element("Hottopics").Elements("Topic")
  select topic.Attribute("Description").Value;

foreach (string topicDesc in topicsDescs) ...


Eine LINQ-Query spart dir hier aber relativ wenig, wenn du also noch etwas unsicher bist, würde ich auf jeden Fall auf if-foreach setzen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
foreach (XElement server in XMLHot.Descendants("Server"))
  if (server.Attribute("Typ") == inputData)
    foreach (topic in server.Element("Hottopics").Elements("Topic")) {
      var topicDesc = topic.Attribute("Description").Value;
      ...
    }

_________________
>λ=
implicit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Sa 12.09.09 11:12 
Zitat:
Gibt es denn zu einer Typenbezeichnung wirklich mehrere Server-Nodes?


Also es gibt fuer den Server-Node die Typen-Bezeichnung in dem Node Attribute. Von diesen Server nodes gibt es viele aber halt mit verschiedenen Typen-Bezeichnern.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
foreach (XElement server in XMLHot.Descendants("Server"))
  if (server.Attribute("Typ") == inputData)
    foreach (topic in server.Element("Hottopics").Elements("Topic")) {
      var topicDesc = topic.Attribute("Description").Value;
      ...
    }


Aber genau das meine ich mit Denkanstoss :) Du hast immer gute ideen... :) Danke .. ich gehe also einfach mit if-foreach durch die XElemente. Probiere ich gleich mal aus.

Bitte den threat noch nicht schliessen, fals ich noch ne frage zu dem thema habe.. Hatte mir naemlich schon 2 tage Kopfzerbrechen eingehandelt mit irgendwelchen recursiven und dann mit xmlnodeListen und all den *piep*. Hat alles nicht zum gewuenschten ergebniss gefuehrt.

Also danke erstmal :) bis gleich (sozusagen)

gruss Steffen
implicit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 14.09.09 19:26 
Hi kha ,,,

danke fuer dein Tip, der hat mich nen ganzes stueck weiter nach vorne gebracht.

Auf dich ist halt verlass :)

Thema kann geschlossen werden...

Gruss Steffen