AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

XML Dateien auslesen

Ein Thema von Yheeky · begonnen am 15. Apr 2008 · letzter Beitrag vom 17. Apr 2008
Antwort Antwort
Seite 2 von 3     12 3   
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#11

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 14:17
Ok, aber auch mit ChildNodes habe ich es nicht hinbekommen

@Centrii: Bekomme nun eine Fehlermeldung:
Zitat:
Kein aktives Dokument.
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#12

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 14:22
hier musst du dein XML zuweisen.

XML.XML.Text:=XMLCode; z.B.

XML.XML.Text := memo1.lines.text;
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#13

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 14:36
Fehlermeldung bleibt leider bestehen.

Hier mal meine komplette Unit:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XMLIntf, XMLDoc;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var xml : TXMLDocument;
    CNode : IXMLNode;
    CdNode : IXMLNode;
    PNode : IXMLNode;
    i,j,k : Integer;

begin
XML := TXMLDocument.Create(nil);
XML.XML.Text := Memo1.Lines.Text;
XML.Options := [doNodeAutoCreate,doAutoSave];
XML.Active:=true;

for i:=0 to XML.ChildNodes.Count-1 do
  begin
    for j:=0 to XML.ChildNodes[i].ChildNodes.Count-1 do
    begin
      CdNode:=XML.ChildNodes[i].ChildNodes[j];
      if CdNode.NodeName='computerdatenthen begin
        for k:=0 to CdNode.ChildNodes.Count-1 do
        begin
          PNode:=CdNode.ChildNodes[k];
          if PNode.NodeName='mainboardthen ShowMessage(PNode.NodeValue); // deine Variable

        end;
      end;
    end;
  end;

end;

end.
In Memo1 steht:

XML-Code:
<computer>
   <computerdaten>
      <mainboard>Asus</mainboard>
      <cpu>Athlon X2 6000+</cpu>
      <ram>2 GB</ram>
      <festplatte>160 GB</festplatte>
   </computerdaten>
   <computerdaten>
      <mainboard>MSI</mainboard>
      <cpu>Intel QuadCore</cpu>
      <ram>4 GB</ram>
      <festplatte>500 GB</festplatte>
   </computerdaten>
</computer>
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#14

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 14:42
es ist ein
var XML : IXMLDocument; und dann mach kein

XML := TXMLDocument.Create(nil); sondern ein

XML:=NewXMLDocument; Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#15

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 14:59
Okay, super, nun funktioniert [/delphi]das schonmal.

Mir fehlt´s nun nur noch an der Ausgabe. Ich habe bisher folgendes:
Delphi-Quellcode:
var i, j : integer;
begin
// Werte zählen
  for i := 0 to myFirstXML.DocumentElement.ChildNodes.Count - 1 do
   for j := 0 to myFirstXML.DocumentElement.ChildNodes['computerdaten'].ChildNodes.Count -1 do
// ...
Von dem Schleifendurchlauf (2 mal) funktioniert es schonmal, aber ich bekomme immer nur den ersten Satz von Computerteilen angezeigt :-/
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#16

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 15:08
du musst natürlich alle Childs durchlaufen, in deiner Unit hast du auch nur "MAinboard" abgefragt, deshalb bekommst du nur den ersten Satz, das gleich musst du jetzt für die anderen Childs auch machen.
Hab ich unter #9 schon angedeuted....
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#17

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 15:22
Nee, also hier frage ich ja den kompletten Tag ab:

Delphi-Quellcode:
var i, j : integer;
begin
// Werte zählen
  for i := 0 to myFirstXML.DocumentElement.ChildNodes.Count - 1 do
   for j := 0 to myFirstXML.DocumentElement.ChildNodes['computerdaten'].ChildNodes.Count -1 do
// ...
Ich bekomme ja auch die Werte für Mainboard, CPU, Ram und Festplatte geliefert, doch beim ersten ist es ein ASUS Mainboard beim zweiten ein MSI...er zeigt mir aber bei beiden Durchläufen ASUS an.
Ich muss auch irgendwie i und j verwenden, aber ich hab´s noch zu keiner funktionierenden Lösung gebracht.

Du oder jemand anderes eine Idee?
  Mit Zitat antworten Zitat
Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#18

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 15:25
mach aus deinem Progrämmchen ein .zip, dann kann man sich das mal anschauen....
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#19

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 15:31
Okay, dank' dir.

Hab die exe mal mit reingepackt.
Angehängte Dateien
Dateityp: zip ixmldocument_905.zip (268,7 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#20

Re: XML Dateien auslesen

  Alt 16. Apr 2008, 15:59
Habs! War doch recht einfach:

ShowMessage(myFirstXML.DocumentElement.ChildNodes[i].ChildNodes[j].Text); Danke trotzdem für die Mühe!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz