Results 1 to 4 of 4

Thread: Uitlezen attributes met OpenXML

  1. #1

    Uitlezen attributes met OpenXML

    Hallo,

    Ik heb het artikel van Mark van Renswoude over het het inlezen van een XML document gelezen. Wat ik alleen mis is hoe ik een attribute van een node kan uitlezen. Ik het XML document van Mark als volgt aangepast:

    Code:
    <?xml version="1.0"?>
    <adresboek>
      <adres id="1">
        <naam>Mark van Renswoude</naam>
        <straat>Zoujewelwillenweten 24</straat>
        <plaats>Schiedam</plaats>
        <email>mark@x2software.net</email>
      </adres>
      <adres id="2">
        <naam>Jan de Vries</naam>
        <straat></straat>
        <plaats>Groningen</plaats>
        <email>jan@devries.nl</email>
      </adres>
    </adresboek>
    En wil nu de waarde van het id attribute ook weergeven. De code die ik hiervoor denk nodig te hebben is:

    Code:
    procedure TForm1.FormCreate(Sender: TObject);
    var
       xmlDoc:         TDomDocument;
       xmlRoot:        TDomElement;
       xmlAdres:       TDomElement;
       xmlAdresItem:   TDomElement;
       i: integer;
    
     begin
       xmlDoc  := xmlParser.fileToDom('C:\adres.xml');
       try
         xmlRoot   := xmlDoc.documentElement;
         xmlAdres  := xmlRoot.getFirstChildElement('adres');
    
         while Assigned(xmlAdres) do begin
           xmlAdresItem  := xmlAdres.findFirstChildElement();
           txtAddressen.Lines.Add('id = ' + xmlAdresItem.GetAttributeNormalizedValue('id'));
    
           while Assigned(xmlAdresItem) do begin
    
             txtAddressen.Lines.Add(xmlAdresItem.NodeName + ' = ' + xmlAdresItem.textContent);
    
             xmlAdresItem  := xmlAdresItem.findNextSiblingElement();
           end;
    
           txtAddressen.Lines.Add('--------');
           xmlAdres  := xmlAdres.getNextSiblingElement('adres');
         end;
       finally
         xmlDOM.Free;
       end;
     end;
    Maar dit werkt helaas niet. De waarde van het id attribute wordt niet zichtbaar. Wie kan mij vertellen wat ik fout doe.

    Alvast bedankt!

    Groeten, Ben

  2. #2
    Senior Member PsychoMark's Avatar
    Join Date
    Nov 2001
    Location
    Raamsdonksveer
    Posts
    10,269
    Bij het tweede artikel staat een link naar een XDOMUtils unit die ik destijds geschreven had. Een van de functies daarin is XDOMGetAttribute:

    Code:
    function XDOMGetAttribute(const ANode: TDomElement;
                                const AName: String): String;
    var
      xmlAttr:      TDomNode;
    
    begin
      Result  := '';
      xmlAttr := ANode.attributes.getNamedItem(AName);
    
      if Assigned(xmlAttr) then
        Result  := XDOMEntityToChar(xmlAttr.nodeValue);
    end;
    ...ik moet eerlijk zeggen dat ik OpenXML niet meer gebruik en 't daarom niet geprobeerd heb met de laatste versie(s), maar hopelijk helpt dit je toch in de goede richting
    Qui custodiet ipsos custodes

  3. #3
    Bedankt! Ik ga het zometeen proberen. Wat gebruik jij nu om XML te lezen?

  4. #4
    Senior Member
    Join Date
    Sep 2003
    Location
    Beuningen
    Posts
    1,207
    Mijn voorkeur voor het lezen/schrijven met XML is het TXMLDocument. Deze staat in de Internet tab.
    In theorie werkt alles maar hoe maak je het dan waar, in de praktijk werkt het maar niemand weet waarom.

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
  •