How are XML attributes mapped to Objective-C properties?
XML attributes (e.g. <book id="bk101">) and child elements both become @property declarations on the generated @interface, but attributes are tagged with a "// XML attribute" comment so the source code clearly distinguishes them. When you wire up NSXMLParser, attributes arrive in the attributeDict argument of parser:didStartElement: while elements arrive as separate didStartElement events — your parser delegate uses the comment as a hint for which dispatch path populates each property.
iOS NSXMLParser vs RaptureXML — which should I use?
NSXMLParser ships with Foundation, has no third-party dependency, and is event-based (SAX-style) — ideal for large XML and CPU/memory-constrained iOS apps. RaptureXML and KissXML wrap libxml2 with an XPath / DOM API that is easier for ad-hoc scraping but pulls in extra binary weight. The generated classes work identically for either: NSXMLParser populates them via delegate callbacks, RaptureXML populates them via [element child:@"title"].
Should properties be strong, weak, or copy?
The generator emits "nonatomic, strong" for object types (NSString *, NSArray *, custom @interface *) and "nonatomic, assign" for scalars (NSInteger, BOOL, double). For NSString * you can switch to "copy" if the XML source mutates strings before they are stored — copy is the conservative iOS convention for value-like immutable types.
How are repeated child elements like <tag> represented?
Repeated children become a single NSArray * property. The generator does not emit NSArray<TagType *> * (Objective-C lightweight generics) by default — append a generic if you want compile-time type checks: @property (nonatomic, strong) NSArray<Tag *> *tags;. Lightweight generics are erased at runtime so they have zero perf cost.
Does the output use ARC?
Yes. The generated @interface assumes Automatic Reference Counting — there are no manual retain / release calls and "strong" is the ARC ownership qualifier. ARC has been the iOS / macOS default since iOS 5 and Xcode 4.2, so this matches every modern Cocoa Touch project.
What about Swift interop?
The generated classes are bridge-friendly — NSString *, NSArray *, NSInteger, and BOOL all bridge to Swift String, [Any], Int, and Bool. Add @objc on the @interface (or expose it via the Bridging-Header.h) and Swift can call any property directly. Mixed projects often use Objective-C XML model classes plus Swift business logic.
Is the XML I paste sent to your servers?
No. XML is parsed by the browser DOMParser and the Objective-C source is generated entirely in JavaScript on your machine. Open DevTools → Network and you will see no requests when you click Convert. Safe for SOAP responses and configuration files containing API keys or credentials.
How do I parse XML into the generated @interface?
Use NSXMLParser with a delegate that populates the model: implement parser:didStartElement:namespaceURI:qualifiedName:attributes: to capture attributes into the matching @property, parser:foundCharacters: to accumulate text content, and parser:didEndElement: to commit the value. For simpler one-off scripts, RaptureXML lets you write [book child:@"title"].text in one line.