Delphi DLL
Delphi DLL
Parsing XML Children Having Identical Tags
See more XML Examples
Demonstrates how to deal with XML where child elements may have identical tags.Chilkat Delphi DLL Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Xml;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Boolean;
xml: HCkXml;
numPhoneNumbers: Integer;
i: Integer;
xPhoneNumber: HCkXml;
numGroupMemberships: Integer;
xMembership: HCkXml;
begin
success := False;
// This example will get the phoneNumber's and groupMembershihpInfo's from the following XML:
// <?xml version="1.0" encoding="UTF-8" ?>
// <someEntries>
// <entry>
// <id>123</id>
// <updated>2017-07-19T05:19:57.761Z</updated>
// <app:edited xmlns:app="http://www.w3.org/2007/app">2017-07-19T05:19:57.761Z</app:edited>
// <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
// <title>George Costanza</title>
// <gd:name>
// <gd:fullName>George Costanza</gd:fullName>
// <gd:givenName>George</gd:givenName>
// <gd:familyName>Costanza</gd:familyName>
// </gd:name>
// <gd:phoneNumber rel="http://schemas.google.com/g/2005#home">(555) 123-4567</gd:phoneNumber>
// <gd:phoneNumber rel="http://schemas.google.com/g/2005#mobile">(555) 444-8877</gd:phoneNumber>
// <gd:phoneNumber rel="http://schemas.google.com/g/2005#work">(555) 678-1111</gd:phoneNumber>
// <gContact:groupMembershipInfo deleted="false" href="http://www.google.com/123"/>
// <gContact:groupMembershipInfo deleted="false" href="http://www.google.com/456"/>
// </entry>
// </someEntries>
//
xml := CkXml_Create();
success := CkXml_LoadXmlFile(xml,'qa_data/xml/georgeCostanza.xml');
numPhoneNumbers := CkXml_NumChildrenHavingTag(xml,'entry|*:phoneNumber');
i := 0;
while i < numPhoneNumbers do
begin
xPhoneNumber := CkXml_GetNthChildWithTag(xml,'entry|*:phoneNumber',i);
Memo1.Lines.Add(CkXml__content(xPhoneNumber));
CkXml_Dispose(xPhoneNumber);
i := i + 1;
end;
Memo1.Lines.Add('----');
numGroupMemberships := CkXml_NumChildrenHavingTag(xml,'entry|*:groupMembershipInfo');
i := 0;
while i < numGroupMemberships do
begin
xMembership := CkXml_GetNthChildWithTag(xml,'entry|*:groupMembershipInfo',i);
Memo1.Lines.Add(CkXml__getAttrValue(xMembership,'href'));
CkXml_Dispose(xMembership);
i := i + 1;
end;
CkXml_Dispose(xml);
end;