Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Prism Inhalte aus XML ROW auslesen (https://www.delphipraxis.net/66311-inhalte-aus-xml-row-auslesen.html)

ZeroQool007 28. Mär 2006 10:13


Inhalte aus XML ROW auslesen
 
Hallo, ich bekomme diese Zeile
Delphi-Quellcode:
    <ROW
      BestellNr="1011001010"
      ArtNr="092150N"
      Anzahl="1"
      Verpackungseinheit="Vorgabe"
      Summeanzahl="1"
      Einheit="Stk."
      Bezeichnung="Kondensator, Klimaanlage"
      Vknetto="50"
      Liefertermin="20050721"
      Istmenge="0"
      Restmenge="1"
      Preiseinheit="/Stk."
      VknettoGesamt="50"
      Positionsrabatt1="0"
      Positionsrabatt2="0"
      Positionsrabatt3="0"
      Positionsrabatt4="0"
      Zuschlag1="0"
      Zuschlag2="0"
      Zuschlag3="0"
      Zuschlag4="0"
      PositionsArt="D"
      Activ="o"
      VonBelegPosId="-1"
      Lagerort="05DASISmk"
      Gebindefaktor="1"
      Verpackungsfaktor="1"
      Preisfaktor="1"
      Preisdivisor="1"
      NichtLieferbar="F"
      AnfrageBeantwortet="F"
      Lieferzeit="0"
    />
nicht ausgelesen. Bekomme immer nur als Rückgabewert
Zitat:

METADATA
Delphi-Quellcode:
var
  xmldoc : XMLDocument;
  root, node : XMLNode;
begin
  xmldoc := XMLDocument.Create;
  xmldoc.Load('C:\test.xml');
  ListBox1.Items.Clear;
  root := xmldoc.DocumentElement;

  for node in root.ChildNodes do
  begin
    ListBox1.Items.Add(node.Name);
  end;
Mit der Suchfunktion habe ich nichts auf mein spezielles Problem gefunden. thx im voraus.

Zitat:

<?xml version="1.0" encoding="windows-1252" standalone="yes"?>
<RECORDS>
<METADATA><FIELDS><FIELD attrname="AutoPosition" fieldtype="i4"/><FIELD attrname="Ebene" fieldtype="string" WIDTH="4"/><FIELD attrname="DatNr" fieldtype="string" WIDTH="18"/><FIELD attrname="BestellNr" fieldtype="string" WIDTH="18"/><FIELD attrname="ArtNr" fieldtype="string" WIDTH="18"/><FIELD attrname="Anzahl" fieldtype="r8"/><FIELD attrname="Verpackungseinheit" fieldtype="string" WIDTH="15"/><FIELD attrname="Summeanzahl" fieldtype="r8"/><FIELD attrname="Einheit" fieldtype="string" WIDTH="15"/><FIELD attrname="Bezeichnung" fieldtype="string" WIDTH="50"/><FIELD attrname="Vknetto" fieldtype="r8"/><FIELD attrname="Liefertermin" fieldtype="datetime"/><FIELD attrname="Istmenge" fieldtype="r8"/><FIELD attrname="Restmenge" fieldtype="r8"/><FIELD attrname="Preiseinheit" fieldtype="string" WIDTH="15"/><FIELD attrname="VknettoGesamt" fieldtype="r8"/><FIELD attrname="Positionsrabatt1" fieldtype="r8"/><FIELD attrname="Positionsrabatt2" fieldtype="r8"/><FIELD attrname="Positionsrabatt3" fieldtype="r8"/><FIELD attrname="Positionsrabatt4" fieldtype="r8"/><FIELD attrname="Zuschlag1" fieldtype="r8"/><FIELD attrname="Zuschlag2" fieldtype="r8"/><FIELD attrname="Zuschlag3" fieldtype="r8"/><FIELD attrname="Zuschlag4" fieldtype="r8"/><FIELD attrname="PositionsArt" fieldtype="string" WIDTH="1"/><FIELD attrname="Activ" fieldtype="string" WIDTH="1"/><FIELD attrname="VonBelegNr" fieldtype="string" WIDTH="18"/><FIELD attrname="VonBelegTyp" fieldtype="string" WIDTH="1"/><FIELD attrname="VonBelegPosId" fieldtype="i4"/><FIELD attrname="Lagerort" fieldtype="string" WIDTH="18"/><FIELD attrname="Pos" fieldtype="string" WIDTH="18"/><FIELD attrname="Gebindeeinheit" fieldtype="string" WIDTH="15"/><FIELD attrname="Gebindefaktor" fieldtype="r8"/><FIELD attrname="Verpackungsfaktor" fieldtype="r8"/><FIELD attrname="Preisfaktor" fieldtype="r8"/><FIELD attrname="Preisdivisor" fieldtype="r8"/><FIELD attrname="NichtLieferbar" fieldtype="string" WIDTH="1"/><FIELD attrname="AnfrageBeantwortet" fieldtype="string" WIDTH="1"/><FIELD attrname="AnfrageBeantwortetAm" fieldtype="datetime"/><FIELD attrname="Lieferzeit" fieldtype="r8"/></FIELDS><PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="1033"/></METADATA>
<RECORD>
<ROW
BestellNr="1011001010"
ArtNr="092150N"
Anzahl="1"
Verpackungseinheit="Vorgabe"
Summeanzahl="1"
Einheit="Stk."
Bezeichnung="Kondensator, Klimaanlage"
Vknetto="50"
Liefertermin="20050721"
Istmenge="0"
Restmenge="1"
Preiseinheit="/Stk."
VknettoGesamt="50"
Positionsrabatt1="0"
Positionsrabatt2="0"
Positionsrabatt3="0"
Positionsrabatt4="0"
Zuschlag1="0"
Zuschlag2="0"
Zuschlag3="0"
Zuschlag4="0"
PositionsArt="D"
Activ="o"
VonBelegPosId="-1"
Lagerort="05DASISmk"
Gebindefaktor="1"
Verpackungsfaktor="1"
Preisfaktor="1"
Preisdivisor="1"
NichtLieferbar="F"
AnfrageBeantwortet="F"
Lieferzeit="0"
/>
</RECORD>
</RECORDS>

MathiasSimmack 28. Mär 2006 21:45

Re: Inhalte aus XML ROW auslesen
 
Mit CSharp bekomme ich mit deinem Code auch den <RECORD>-Knoten. Dass nicht mehr erscheint, wundert mich nicht, denn du fragst ja auch nur die Child-Knoten des Root ab. Versuch´s mal so:

Code:
void Button1Click(object sender, System.EventArgs e)
{
   try
   {
      XmlDocument xmldoc = new XmlDocument();
      xmldoc.Load(@"..\..\test.xml");
      XmlNode root = xmldoc.DocumentElement;
      this.ScanNode(null, root);
   }
   catch (Exception ex)
   {
      MessageBox.Show(ex.ToString());
   }
}

void ScanNode(TreeNode tvParent, XmlNode parentNode)
{
   TreeNode root = tvParent;
   if (root == null)
   {
      root = new TreeNode(parentNode.Name);
      treeView1.Nodes.Add(root);
   }
   foreach (XmlNode node in parentNode)
   {
      TreeNode newNode = new TreeNode(node.Name);
      root.Nodes.Add(newNode);
      this.ScanNode(newNode, node);
   }
}
Ist CSharp und mit TreeView, zeigt aber zumindest alle Knotennamen an. ;) Da es .NET ist, lässt sich das problemlos nach Delphi umbauen. Namespace und Typen sind ja die gleichen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:55 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