Sample code for 30+ languages & platforms
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

Objective-C
#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"];