Results 1 to 2 of 2

Thread: XML file uitlezen

  1. #1

    XML file uitlezen

    Hallo allemaal,

    Ik moet een XML file uitlezen waarbij sommige items meerdere niveau's hebben.
    Op de een of andere manier krijg ik wanneer ik de Consumptions uit wil lezen geen data terug
    De XML is als volgt opgebouwd
    Code:
    <InventoryData>
      <InventoryItemData>
        <PartNumber>195F050 52</PartNumber>
        <UID>1561863465436445634</UID>
        <SplitFromUID />
        <Quantity>0</Quantity>
        <Operator>kdevries</Operator>
        <InitialQuantity>1</InitialQuantity>
        <Consumptions>
          <Consumption>
            <Workstation>Work bench A</Workstation>
            <Operation>Materiaal verbruiken</Operation>
            <Batch>KdV non-serialized test</Batch>
            <Recipe />
            <Attempts>1</Attempts>
            <Placements>1</Placements>
            <Position />
            <ProductUID>KdV non-serialized test</ProductUID>
            <TimePosted>2021/04/15 12:01:27</TimePosted>
          </Consumption>
        </Consumptions>
      </InventoryItemData>
      <InventoryItemData>
        <PartNumber>195F050 52</PartNumber>
        <UID>1685486442324</UID>
         ...
    Ik hiervoor de volgende code
    Code:
    function TNavFlXSync.ReadXML(aFile:string): boolean;
    var
      Doc: IXMLDocument;
      Data: IXMLNode;
      Node: IXMLNode;
      EventNodes,EventNode:IXMLNode;
      ConsumptionNodes,ConsumptionNode:IXMLNode;
      j,i: Integer;
      TempItemData:TInventoryItemData;
      TempEvent:TEvent;
      TempConsumption:TConsumption;
    begin
      Doc := LoadXMLDocument(aFile);
      Data := Doc.DocumentElement;
    
      j:=0;
      while j<Data.ChildNodes.Count do
      begin
        Node := Data.ChildNodes[j];
        TempItemData:=TInventoryItemData.create;
        if Node.LocalName = 'InventoryItemData' then
        begin
          TempItemData.FPartNumber:=Node.ChildNodes['PartNumber'].Text;
          TempItemData.FUID:= Node.ChildNodes['UID'].Text;
          TempItemData.FSplitFromUID:=Node.ChildNodes['SplitFromUID'].Text;
          TempItemData.FQuantity:=strToFloat(Node.ChildNodes['Quantity'].text);
          TempItemData.FInitialQuantity:=strToFloat(Node.ChildNodes['InitialQuantity'].Text);
          TempItemData.FUser:=Node.ChildNodes['Operator'].Text;
    
          ConsumptionNodes:=Node.ChildNodes['Consumptions'];
          for i:=0 to ConsumptionNodes.ChildNodes.Count -1 do
          begin
           TempConsumption:=TConsumption.create;
    
           ConsumptionNode:=ConsumptionNodes.ChildNodes[i];
           TempConsumption.FAttempts:=  strtoint(ConsumptionNode.ChildNodes['Attempts'].Text);  // Hier gaat het dus mis
    
           TempItemData.Consumptions.Add(TempConsumption);
          end;
    
    
          EventNodes:=Node.ChildNodes['Events'];
          for i:=0 to EventNodes.ChildNodes.Count -1 do
          begin
           TempEvent:=TEvent.create;
           EventNode:=EventNodes.ChildNodes[i];
           showmessage(EventNode.ChildNodes['EventNumber'].Text);
    //       TempEvent.FEventType:= EventNode.ChildNodes['EventType'].Text ;
    //       TempEvent.FNumber:= StrToInt(EventNode.ChildNodes['EventNumber'].text);
    //       TempEvent.FQuantityChange:= strToFloat(EventNode.ChildNodes['QuantityChange'].Text);
    //       TempEvent.FReasonCode:= EventNode.ChildNodes['Reasoncode'].Text ;
           TempItemData.Events.Add(TempEvent);
          end;
    
          InventoryItemsData.Add(TempItemData);
        end;
        j:=j+1;
      end;
    
    
    
    result:=true;
    end;
    De vraag is dan ook hoe zorg ik ervoor dat ik de consumption data op een goeie manier kan uitlezen

  2. #2
    Probleem is opgelost.
    Ik las idd op een juiste manier de XML uit
    Echter in sommige gevallen stonden van de van de consumptions niet als velden maar als attributes gedefinieerd.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •