AGB  ·  Datenschutz  ·  Impressum  







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

XML Einlesen

Ein Thema von CVi · begonnen am 8. Jul 2020 · letzter Beitrag vom 8. Jul 2020
 
CVi

Registriert seit: 21. Nov 2010
15 Beiträge
 
#1

XML Einlesen

  Alt 8. Jul 2020, 11:59
Hallo,
habe folgendes problem mit dem einlesen von xml dateien und komme da irgendwie nicht weiter.

Beide (Kopf) werden korrekt eingelesen.
Positionen nimmt er grundsätzlich nur die von dem ersten Kopf ?!

kann mir jemand einen entscheidenen hinweis geben?
sicherlich nur eine kleinigkeit, aber ich komme nicht drauf




Nachfolgend die XML-Datei

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<XML-Orders>
   <Kopf>
      <Kontonummer>10001</Kontonummer>
      <Name>Kunde1</Name>
      <Strasse>Hauptstrasse 22</Strasse>
      <POSITION>
         <PosNr>001</PosNr>
         <ArtikelNr>4711</ArtikelNr>
         <Artikelbezeichnung>Artikel1</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>002</PosNr>
         <ArtikelNr>4712</ArtikelNr>
         <Artikelbezeichnung>Artikel2</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>003</PosNr>
         <ArtikelNr>4713</ArtikelNr>
         <Artikelbezeichnung>Artikel3</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>004</PosNr>
         <ArtikelNr>4714</ArtikelNr>
         <Artikelbezeichnung>Artikel4</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>005</PosNr>
         <ArtikelNr>4715</ArtikelNr>
         <Artikelbezeichnung>Artikel5</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>006</PosNr>
         <ArtikelNr>4716</ArtikelNr>
         <Artikelbezeichnung>Artikel6</Artikelbezeichnung>
      </POSITION>
   </Kopf>
   <Kopf>
      <Kontonummer>10002</Kontonummer>
      <Name>Kunde2</Name>
      <Strasse>Schulstrasse 40</Strasse>
      <POSITION>
         <PosNr>001</PosNr>
         <ArtikelNr>4717</ArtikelNr>
         <Artikelbezeichnung>Artikel7</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>002</PosNr>
         <ArtikelNr>4718</ArtikelNr>
         <Artikelbezeichnung>Artikel8</Artikelbezeichnung>
      </POSITION>
      <POSITION>
         <PosNr>003</PosNr>
         <ArtikelNr>4719</ArtikelNr>
         <Artikelbezeichnung>Artikel9</Artikelbezeichnung>
      </POSITION>
   </Kopf>
</XML-Orders>

Nachfolgend mein Code:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  Doc: IXMLDocument;
  Data: IXMLNode;
  Node: IXMLNode;
  I, E: Integer;
begin
  Memo2.Clear;
  Doc := LoadXMLDocument('test.xml');
  Data := Doc.DocumentElement;
  for I := 0 to Data.ChildNodes.Count-1 do
  begin
    Node := Data.ChildNodes[I];
    if Node.NodeName = 'Kopfthen
    begin
      Memo2.Lines.Add(Node.ChildNodes['Kontonummer'].NodeValue);
      Memo2.Lines.Add(Node.ChildNodes['Name'].NodeValue);
      Memo2.Lines.Add(Node.ChildNodes['Strasse'].NodeValue);
      //Positionen anfang
      Node := Doc.DocumentElement.ChildNodes['Kopf'].ChildNodes['POSITION'];
      while Assigned(Node) do
      begin
        Memo2.Lines.Add(Node.ChildNodes['PosNr'].NodeValue);
        Memo2.Lines.Add(Node.ChildNodes['ArtikelNr'].NodeValue);
        Memo2.Lines.Add(Node.ChildNodes['Artikelbezeichnung'].NodeValue);
        Node := Node.NextSibling;
      end;
      //Positionen ende
    end;
  end;
end;

Nachfolgend mein (falsches) ergebnis:

Code:
10001
Kunde1
Hauptstrasse 22
001
4711
Artikel1
002
4712
Artikel2
003
4713
Artikel3
004
4714
Artikel4
005
4715
Artikel5
006
4716
Artikel6

10002
Kunde2
Schulstrasse 40
// ab hier liest er wieder nur die zu dem ersten Kopf gehörigen Positionen ein ?
001
4711
Artikel1
002
4712
Artikel2
003
4713
Artikel3
004
4714
Artikel4
005
4715
Artikel5
006
4716
Artikel6
  Mit Zitat antworten Zitat
 


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 01:16 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