Autor Beitrag
bieberpelz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 13.09.05 16:16 
Vorwort: Ich habe wiedermal sämtliche Suchfunktionen benutzt, sämtliche Threads gelesen aber alles hat mir dabei nicht geholfen da meine .xml Datei die ich erhalte eine andere Struktur hat.

Was ich möchte ist nur die Daten aus dieser .xml Datei auslesen. Ich zeige euch erstmal die .xml

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
<!-- blablalab -->
-
<main>
<!-- Service-Holder -->
<server id="login">online</server>
<server id="chaos-char">online</server>
<server id="loki-char">online</server>
<server id="homepage">online</server>
<!-- Chaos-Zoneserver (1-16) -->
<server id="chaos-01">online</server>
<server id="chaos-02">online</server>
<server id="chaos-03">online</server>
<server id="chaos-04">online</server>
<server id="chaos-05">online</server>
<server id="chaos-06">online</server>
<server id="chaos-07">online</server>
<server id="chaos-08">online</server>
<server id="chaos-09">online</server>
<server id="chaos-10">online</server>
<server id="chaos-11">online</server>
<server id="chaos-12">online</server>
<server id="chaos-13">online</server>
<server id="chaos-14">online</server>
<server id="chaos-15">online</server>
<server id="chaos-16">online</server>
<!-- Loki-Zoneserver (1-12) -->
<server id="loki-01">online</server>
<server id="loki-02">online</server>
<server id="loki-03">online</server>
<server id="loki-04">online</server>
<server id="loki-05">online</server>
<server id="loki-06">online</server>
<server id="loki-07">online</server>
<server id="loki-08">online</server>
<server id="loki-09">online</server>
<server id="loki-10">online</server>
<server id="loki-11">online</server>
<server id="loki-12">online</server>
<!-- Further Server-Info -->
<patch id="allow">allow</patch>
<patch id="version">776</patch>
<!-- Last refresh -->
<lastrefresh>1126622582</lastrefresh>
</main>


Das was ich da haben möchte sind für die Einzelnen Server die Werte ob Online oder Offline.
Ausprobiert habe ich da einiges, war aber im endeffekt blödsinn. Kurz weg, ich schnall nun nicht wie ich damit umgehen soll und mir fehlt das weitere wissen über .xml um danach zu suchen.
Mir ist schon klar das Fragen der Art öfters vorkommen aber tut mir leid, ich finde leider keinen anderen Weg.

Es wäre nett wenn ihr mir da mal etwas helfen könnten, erklären könnten was ich brauche, was ich machen muss und vor allem wie ich den Rückgabe wert einzelner Zeilen erhalten.

Ich bedanke mich schonmal im vorraus.

Mfg Bieberpelz
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 14.09.05 09:23 
Ich kann nur für MS-XML sprechen: Der einfachste Weg hieße Suche in: Delphi-Forum, Delphi-Library "XPATH", weil du damit mehrere Knoten auf einmal auslesen kannst. Ich weiß nun leider nicht, ob <main> in deiner Datei der Hauptknoten ist. Ich gehe einfach mal davon aus.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
<?xml version ...?>
<!DOCTYPE ...?
<!-- was auch immer hier stehen mag -->
<main
  <server id="IrgendeineId">EinWert</server>
  <server id="IrgendeineId">EinWert</server>
  <server id="IrgendeineId">EinWert</server>
  <server id="IrgendeineId">EinWert</server>
  <!-- ... -->
<hauptknoten>

Stell dir das wie eine Ordnerstruktur vor
ausblenden Quelltext
1:
2:
3:
4:
main
  server
  server
  server

Dann könntest du mit XPath und MS-XML zum Beispiel sämtliche <server>-Knoten auf einen Schlag auslesen:
ausblenden Delphi-Quelltext
1:
2:
3:
nodeList := xmlDoc.selectNodes('/main/server'); // nodeList : IXMLDOMNodeList
for i := 0 to nodeList.length - 1 do
  ShowMessage(nodeList.item[i].xml);

Oder etwas spezifischer:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
nodeList := xmldoc.selectNodes('/main/server[@id and text()!=""]');
// in dem Fall werden nur Knoten berücksichtigt, die ein "id"-Attribut
// und einen Wert im Knoten haben; Sachen wie <server/> oder <server>test</server
// oder <server id="test"/> werden dadurch nicht angezeigt

for i := 0 to nodeList.length - 1 do
begin
  attr := nodeList.item[i].Get_attributes.getNamedItem('id').text;
  wert := nodeList.item[i].text;

  ShowMessage(Format('Server "%s" ist %s', [attr, wert]));
end;


Mehr Lesestoff gibt es bei Microsoft: Suche im MSDN "XPATH".