Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi MSXML - Mehrere Rows in einem XML Node (https://www.delphipraxis.net/25069-msxml-mehrere-rows-einem-xml-node.html)

ueei.net 30. Jun 2004 17:29


MSXML - Mehrere Rows in einem XML Node
 
Hallo,

habe eine XML Datei mit folgender Struktur,

XML-Code:
<haupt>
<texte>
 <Row>Text 1 usw</Row>
 <Row>Text 2 usw</Row>
 <Row>Text 3 usw</Row>
 <Row>Text 4 usw</Row>
</texte>
</haupt>
lese dies folgend aus

Delphi-Quellcode:
 anfrage := xmlDoc.selectNodes('//haupt');

  for i := 0 to anfrage.length - 1 do
  begin
     subnode := anfrage.item[i].selectSingleNode('texte');
     mem_kopf.Lines.Add(subnode.text);
  end;
Bekomme jetzt immer in subnode.text alle Einträge der Zeilen auf einmal.

Wie kann ich diese wieder trennen?

Danke für eure Hilfe

MathiasSimmack 30. Jun 2004 18:45

Re: MSXML - Mehrere Rows in einem XML Node
 
Warum machst du nicht gleich das:
Delphi-Quellcode:
anfrage := xmlDoc.selectNodes('/haupt/texte/Row');
for i := 0 to anfrage.length - 1 do
begin
  { ... }
end;
Ist einfacher, kürzer und funktioniert genauso. ;)

ueei.net 30. Jun 2004 19:02

Re: MSXML - Mehrere Rows in einem XML Node
 
Danke,

hat fast funktioniert

Delphi-Quellcode:
anfrage := xmlDoc.selectNodes('//haupt/texte/Row');
for i := 0 to anfrage.length - 1 do
begin
  { ... } 
end;
aber perfekt, danke.

lg

MathiasSimmack 30. Jun 2004 20:26

Re: MSXML - Mehrere Rows in einem XML Node
 
Nur als Anmerkung: Zwei Slashes nimmt man eigentlich nur, wenn man auf Knoten zugreifen will, die sich irgendwo in der Datei befinden können. Nehmen wir folgendes Beispiel:
XML-Code:
<ganz oben>
  <Knoten/>
  <AndererKnoten>
    <Knoten/>
  </AndererKnoten>
  <Und noch ein Knoten>
    <Da wieder einer>
      <Knoten/>
    </Da wieder einer>
  </Und noch ein Knoten>
</ganz oben>
dann kriegst du mit
Delphi-Quellcode:
anfrage := xmlDoc.selectNodes('//Knoten');
alle gleichnamigen Knoten egal wo die sind. Eine bestimmte Struktur wird dabei nicht berücksichtigt. Mit anderen Worten: Wenn dich der Aufbau der XML-Datei nicht interessiert, dann reicht auch schon:
Delphi-Quellcode:
anfrage := xmlDoc.selectNodes('//Row');
in deinem Fall.

Ein Slash dagegen (unter der Bedingung, dass "xmlDoc" nicht schon auf den Root-Knoten "haupt" zeigt) setzt eine bestimmte Struktur voraus.

Mehr dazu findest du in Microsofts XML-SDK oder im PSDK.

ueei.net 30. Jun 2004 20:30

Re: MSXML - Mehrere Rows in einem XML Node
 
ok, danke.

stimmt ich habe eine komplexere struktur als in meinem beispiel angegeben.

lg


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz