Did you try the XML data binder in C++ Builder? If you have a sample XML file. It can made the data structures for your app to access it.
But your sample XML file should look a little like this:
<?xml version="1.0"?>
<log>
<Soft id="0">
<DateTime>2024-12-10 12:58:49</DateTime>
<Status>Info</Status>
<Message>Auto start on - Connecting to HPU</Message>
</Soft>
<Soft id="1">
<DateTime>2024-12-10 12:58:50</DateTime>
<Status>Info</Status>
<Message>Auto start off</Message>
</Soft>
<Soft id="2">
<DateTime>2024-12-10 12:58:50</DateTime>
<Status>Error</Status>
<Message>Connection timed out!</Message>
</Soft>
</log>
Here is some code to read the file after you run the builder:
int Me;
String Testing;
_di_IXMLlogType Test;
_di_IXMLCAMSoftType Ok;
Test = Getlog(XMLDocument1); // Loads my XML file from the TXMLDocument
Me = Test->GetCount(); // finds the total number of records
Ok = Test->Nodes[1]; // Loads the second node in the file
Testing = Ok->Get_Message();
Loads the "Message" field from the record and loads it into a string (The get name will depends on your field names. IE my field was called "Message". I also have Get_Status and Get_Id)
<Program>...</program>(P versus p) is a typo I assume. Otherwise the error would be hilarious.