SAXyOX 0.0.3

SAXyOX 0.0.3

TestsTested
LangLanguage Obj-CObjective C
License Apache 2
ReleasedLast Release Dec 2014

Maintained by Unclaimed.


Downloads

Total675
Week0
Month0

Installs

Apps20
Test Targets2
powered by Segment

GitHub

Stars25
Watchers6
Forks2
Issues2
Contributors1
Pull Requests0

Code

Files43
LOCLines of Code 5,141


SAXyOX 0.0.3

  • By
  • Richard Easterling

SAXy OX - Objective-C XML and JSON Binding Library

SAXy OX is a full-featured XML and JSON marshalling framework for Objective-C. It's purpose is to allow domain objects to be serialized to XML or JSON with a minimal amount of coding.

Features include:

  • efficient reading/unmarshalling and writing/marshalling of XML or JSON from domain objects
  • full XML namespace support
  • built-in type conversion and formatting
  • highly configurable API
  • modern Objective-C: ARC and blocks
  • self-reflective automatic mapping
  • optimized for iOS with no no third-party dependencies

There are several well-documented examples in the SAXyTests folder, including:

Usage tips

  • run the examples (Product->Test in Xcode), set break points to inspect state
  • watch the mapper in action by setting: reader.context.logReaderStack = YES;
  • create your own mapping by starting with a working example and making small modifications
  • the JSON or XML folder can be removed if not being used

As an example, given the class:

@interface CartoonCharacter : NSObject
  @property(nonatomic)NSString *firstName;
  @property(nonatomic)NSString *lastName;
@end

A SAXy mapper and reader can be defined in just a few lines of code:

NSString *xml = @"<tune><first>Daffy</first><last>Duck</last></tune>";

OXmlReader *reader = [OXmlReader readerWithMapper:          //declares a reader with embedded mapper
                      [[OXmlMapper mapper] elements:@[
                       [OXmlElementMapper rootXPath:@"/tune" type:[CartoonCharacter class]]
                       ,
                       [[[OXmlElementMapper elementClass:[CartoonCharacter class]]
                         xpath:@"first" property:@"firstName"]
                        xpath:@"last" property:@"lastName"]
                       ]]
                      ];

CartoonCharacter *tune = [reader readXmlText:xml];          //reads xml

STAssertEqualObjects(@"Daffy", tune.firstName, @"mapped 'first' element to 'firstName' property");
STAssertEqualObjects(@"Duck",  tune.lastName,  @"mapped 'last'  element to 'lastName'  property");