AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XMLDocument auslesen

Ein Thema von dr. love · begonnen am 25. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#1

XMLDocument auslesen

  Alt 25. Mär 2007, 15:31
Also eins gleich vorweg... XML is völliges Neuland für mich und die Frage wahrscheinlich leicht zu beantworten... im Forum hab ich aber nix gefunden. Im folgenden mal die Struktur einer einfachen XML-Datei:


Delphi-Quellcode:
- <array>
  <curLength>0</curLength>
  - <struct>
    <index>1</index>
    - <array>
      <name>NADROUTSCELVL</name>
      <curLength>0</curLength>
      - <array>
        <index>1</index>
        <curLength>0</curLength>
        - <encoded>
          <style>be</style>
          <size>4</size>
          <data>1234567890000000000000010000000000000001000000000000</data>
          </encoded>
        </array>
      - <array>
        <index>2</index>
        <curLength>0</curLength>
        - <encoded>
          <style>be</style>
          <size>4</size>
          <data>9876543210000000000000010000000000000001000000000000</data>
          </encoded>
        </array>
      </array>
    </struct>
  </array>

Auf die Inhalte kann man bekanntlich über XMLDocument.DocumentElement.ChildNodes['NAME'].Text zugreifen


Der Ausdruck

ListBox1.Items.Add(XMLDocument1.DocumentElement.ChildNodes['struct'].ChildNodes['array'].ChildNodes['array'].ChildNodes['index'].Text); schreibt den String "1" in die ListBox. Das entspricht dem Index des ersten Arrays. Wenn ich aber ein weiteres "Array" (wie oben mit dem Index 2) habe, wie komme ich dann an dessen Index? Schließlich sind die Namen identisch.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: XMLDocument auslesen

  Alt 25. Mär 2007, 16:24
Hallo,

wenn du kein identifizierendes Merkmal für den Einzelzugriff hast oder - wie in deinem Fall - generell eine Knotenmenge verarbeiten willst, dann kannst du so vorgehen:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  dl: IDOMNodeList;
  dn: IDOMNodeEx;
  xPath: string;
  i: Integer;
begin
  with XMLDoc.DOMDocument as IDOMNodeSelect do
  begin
    xPath := '/array/struct/array/array/index';
    dl := selectNodes(xPath);
    for i := 0 to Pred(dl.length) do
    begin
      dn := dl.item[i] as IDOMNodeEx;
      ShowMessage(String(dn.Text));
    end;
  end;
end;
Dabei enthält xmlDoc (TXMLDocument) deine Beispieldatei.

Grüße vom marabu
  Mit Zitat antworten Zitat
dr. love

Registriert seit: 10. Jan 2007
92 Beiträge
 
#3

Re: XMLDocument auslesen

  Alt 25. Mär 2007, 16:34
Hallo!

Scheint zu funktionieren, wenn auch etwas umständlich. Danke Marabu!
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:54 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