Autor Beitrag
bjacke
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Sa 27.11.04 20:47 
Hi, ich habe follgendes Probelem. Ich habe eine XML, die so aussieht.
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
- <client_state>
- <project>
  <master_url>http://delphi.de/</master_url> 
  <project_name>geheim</project_name> 
  </project>
- <project>
  <master_url>http://delphi-forum.de/</master_url> 
  <project_name>das ist hier</project_name> 
  </project>
</client_state>

Meine Frage ist jetzt, wie kann ich auf die unterschiedlichen "project_name"s zugreifen. Nutze MS XML 4.0.
ScorpionKing
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: So 28.11.04 09:11 
Welche Komponente benutzt du? Ich glaube nicht das MS XML 4.0 eine für Delphi ist, oder?

_________________
Aus dem Urlaub zurück!
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.11.04 09:36 
@ScorpionKing: Nein, Microsoft XML 4 ist keine Komponente. Wenn es aber installiert ist, kann man es als Typbibliothek für Delphi importieren und dann recht einfach XML-Dateien bearbeiten. Es gibt auch einige Suche in: Delphi-Forum, Delphi-Library BEITRÄGE im Forum zu diesem Thema.

@bjacke: Hast du denn schon mal mit MS-XML gearbeitet? Es wäre einfacher, wenn du ein bisschen Quellcode zeigst, damit man weiß, ob du schon Ahnung hast, oder ob eine entsprechende Antwort umfangreicher ausfallen müsste. Grundsätzlich empfehle ich dir die Forensuche nach Suche in: Delphi-Forum, Delphi-Library XPATH XML (oder nach Suche in: Delphi-Forum, Delphi-Library SELECTNODES XML). In deinem Fall wäre der passende XPath-String
ausblenden Quelltext
1:
//client_state/project					

Ob dir das schon weiterhilft, weiß ich jetzt nicht, aber unter den Suchergebnissen gibt es ein Beispiel, das vllt. schon ein paar Fragen beantwortet.
bjacke Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: So 28.11.04 10:27 
Ich habe mir XML so hakb an einem Tag selber beigebraucht, mit einigen Tuorials. Dier mein Quelltext.

ausblenden volle Höhe Delphi-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:
procedure TForm1.stats;
Var   stats:IXMLDOMnode;  stats_path:string;
Begin
BOINC_path:=BOINC_path1.Caption;
stats_path:=BOINC_path+'client_state.xml';

  if not FileExists(stats_path) then prefPanel.BringToFront;
  xmlDoc:=CoDomDocument40.Create;

 xmlDoc.setProperty('NewParser',true);                         //Laden der Sah XML
 xmlDoc.load(stats_path) ;

   if xmlDoc.parseError.errorCode = 0 then
   Begin

   stats:=xmldoc.selectSingleNode('client_state/project/project_name');  //1.Projekt auslesen

      Gbox1.Caption:=stats.text;
   {  if stats.text<>'' then             //Dieser Abscnitt  
                                        ist mehrfach in der XML vorhanden und 
                                        unterscheidet sich nur in den values. Das erste 
                                        Mal kann ich noch auslesen, aber wenn ich das 
                                        wieder versuche, wird mir das gleiche result 
                                        geliefert.
     Begin
     Gbox1.Visible:=true;
     stats:=xmldoc.selectSingleNode('user_nameclient_state/project');
     Label11.Caption:=stats.text;
     stats:=xmldoc.selectSingleNode('client_state/project/team_name');
     Label14.Caption:=stats.text;
     stats:=xmldoc.selectSingleNode('client_state/project/user_total_credit');
     Label17.Caption:=stats.text;
     End;
   stats:=xmldoc.selectSingleNode('client_state/project/project_name');   }

   End;
totalcredit.Caption:=Label17.Caption;
end;


Moderiert von user profile iconUGrohne: Code- durch Delphi-Tags ersetzt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 28.11.04 11:40 
Ja, okay. Dann sag ich jetzt einfach mal, dass du zwar das Grundwissen hast, dass du aber offenbar nicht weißt, wie man mehrere gleichnamige Knoten ausliest. Und da war, wie erwähnt, das Stichwort: selectNodes (anstelle von selectSingleNode), und hier noch mal das Beispiel, falls es oben im Text etwas untergegangen ist:

[url=www.delphi-forum.de/...php?p=121751#121751]klick mich![/url]

Ich bin der Meinung, es müsste dir helfen, da es etwas ähnliches macht. Zumindest verdeutlicht es dir die Verwendung von selectNodes zum Auslesen mehrerer Knoten.
bjacke Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: So 28.11.04 14:17 
MathiasSimmack hat folgendes geschrieben:
Ja, okay. Dann sag ich jetzt einfach mal, dass du zwar das Grundwissen hast, dass du aber offenbar nicht weißt, wie man mehrere gleichnamige Knoten ausliest. Und da war, wie erwähnt, das Stichwort: selectNodes (anstelle von selectSingleNode), und hier noch mal das Beispiel, falls es oben im Text etwas untergegangen ist:

[url=www.delphi-forum.de/...php?p=121751#121751]klick mich![/url]

Ich bin der Meinung, es müsste dir helfen, da es etwas ähnliches macht. Zumindest verdeutlicht es dir die Verwendung von selectNodes zum Auslesen mehrerer Knoten.


Thx für deine Hilfe!