Objective-C
Objective-C
Xero Export Accounts to CSV
Demonstrates how to export Accounts data to a CSV.Note: Requires Chilkat v9.5.0.64 or greater.
Chilkat Objective-C Downloads
#import <CkoRest.h>
#import <CkoStringBuilder.h>
#import <CkoCsv.h>
#import <CkoXml.h>
BOOL success = NO;
// Note: Requires Chilkat v9.5.0.64 or greater.
// This requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoRest *rest = [[CkoRest alloc] init];
// Before sending REST API calls, the REST object needs to be
// initialized for OAuth1.
// See Xero 2-Legged OAuth1 Setup for sample code.
// Assuming the REST object's OAuth1 authenticator is setup, and the initial
// connection was made, we may now send REST HTTP requests..
// Get the full list of accounts.
CkoStringBuilder *sbXml = [[CkoStringBuilder alloc] init];
success = [rest FullRequestNoBodySb: @"GET" uriPath: @"/api.xro/2.0/Accounts" sb: sbXml];
if (success != YES) {
NSLog(@"%@",rest.LastErrorText);
return;
}
// A 200 response is expected for actual success.
if ([rest.ResponseStatusCode intValue] != 200) {
NSLog(@"%@",[sbXml GetAsString]);
return;
}
// Build a CSV containing a few Account fields.
CkoCsv *csv = [[CkoCsv alloc] init];
csv.HasColumnNames = YES;
[csv SetColumnName: [NSNumber numberWithInt: 0] columnName: @"AccountID"];
[csv SetColumnName: [NSNumber numberWithInt: 1] columnName: @"Name"];
[csv SetColumnName: [NSNumber numberWithInt: 2] columnName: @"Code"];
[csv SetColumnName: [NSNumber numberWithInt: 3] columnName: @"EnablePaymentsToAccount"];
// Iterate over the accounts and build the CSV.
BOOL bAutoTrim = NO;
CkoXml *xml = [[CkoXml alloc] init];
[xml LoadSb: sbXml autoTrim: bAutoTrim];
int numAccounts = [[xml NumChildrenAt: @"Accounts"] intValue];
int i = 0;
while (i < numAccounts) {
xml.I = [NSNumber numberWithInt: i];
[csv SetCellByName: [NSNumber numberWithInt: i] columnName: @"AccountID" content: [xml GetChildContent: @"Accounts|Account[i]|AccountID"]];
[csv SetCellByName: [NSNumber numberWithInt: i] columnName: @"Name" content: [xml GetChildContent: @"Accounts|Account[i]|Name"]];
[csv SetCellByName: [NSNumber numberWithInt: i] columnName: @"Code" content: [xml GetChildContent: @"Accounts|Account[i]|Code"]];
[csv SetCellByName: [NSNumber numberWithInt: i] columnName: @"EnablePaymentsToAccount" content: [xml GetChildContent: @"Accounts|Account[i]|EnablePaymentsToAccount"]];
i = i + 1;
}
// Examine the CSV.
NSLog(@"%@",[csv SaveToString]);
// Save the CSV to a file.
[csv SaveFile: @"qa_output/xero_accounts.csv"];