Plak Objective-C links en klik op "Converteren" — wij maken er XML vanPlak Objective-C code

Wat deze tool doet

Als je ooit met de hand een XML-payload hebt moeten bouwen die past bij een Objective-C-model — voor een oude SOAP-service, een plist-bestand, een Cocoa-config of een testfixture — dan ken je het riedeltje. Je telt @property-regels, haalt de type-qualifiers eruit, onthoudt welke NSArray-containers zijn en hoopt dat de vorm klopt. Plak de Objective-C hier en je krijgt in één keer welgevormde XML terug. Eén alloc/init-snippet, een heel headerbestand met meerdere @interface-blokken, of een diep genest model — zelfde resultaat.

Het is geen naïeve tekstvervanging. De converter volgt hoe Cocoa daadwerkelijk naar XML mapt. NSString-waarden worden tekstknopen (netjes geëscapet). NSNumber en NSDecimalNumber verliezen hun wrapper en worden gewone numerieke tekst — dus [NSDecimalNumber decimalNumberWithString:@"249.99"] komt eruit als 249.99. BOOL-waarden worden true / false, of de variant YES / NO als jouw schema dat verwacht. NSArray<OrderItem *> wordt een container-element met één kind per item, genoemd naar het elementtype — dezelfde vorm die NSXMLElement-bomen uitzenden.

De backing via instance variables is ook geregeld. Als je @property @synthesize customerName = _customerName; gebruikt, heet het element nog steeds customerName, niet _customerName — die iVar-naam is een implementatiedetail, geen onderdeel van het wire-formaat. Geneste objecten (een Order met een Address-@property) worden ter plekke uitgeklapt, en nil-waarden worden lege elementen zodat de vorm consistent blijft. Plak je meerdere @interface-blokken, dan belandt elk ervan in de uitvoer. Plak het zoals het in je .h-bestand staat — geen opschonen nodig — en vergelijk het resultaat met wat NSXMLDocument zou produceren.

Zo gebruik je het

Drie stappen. Werkt hetzelfde of je nu één klasse of een hele bundel headers plakt.

1

Plak je Objective-C (of probeer het voorbeeld)

Gooi je Objective-C in de linker editor zoals het is. Een @interface-blok, een alloc/init-objectliteraal, meerdere klassen of geneste types — allemaal prima. Klik op Voorbeeld laden om eerst een realistisch Order / OrderItem / Address-voorbeeld te zien.

Je hoeft geen @property-attributen eraf te strippen, geen pragma's te verwijderen en geen importregels op te ruimen. Laat de code zoals die in Xcode staat. De parser weet hoe hij een echt .h- of .m-bestand leest.

2

Druk op Converteren

Klik op de groene Converteren-knop. De tool leest de Objective-C, houdt elke @property, bewaart geneste objecten en bouwt de XML in één ronde. Ondertussen loopt er kort een laadindicator.

3

Kopieer de XML

Het rechterpaneel vult zich met ingesprongen, welgevormde XML die elke standaard-conforme parser — inclusief NSXMLParser — accepteert. Kopieer het in een plist, een SOAP-request-body, een testfixture of je documentatie.

Wanneer dit echt handig is

iOS plist-fixtures bouwen

Je hebt een Objective-C-model en je hebt er een bijpassende Info.plist of seed-plist bij nodig. Plak de klasse, pak de XML, gooi het in je bundle — geen <code>&lt;dict&gt;</code> / <code>&lt;key&gt;</code>-paren met de hand.

Cocoa XML-configbestanden

Oude desktop-Cocoa-apps leveren nog steeds XML-config. Maak van je <code>Settings</code>-klasse een direct bewerkbare template zodat je config overeenkomt met de code die hem leest.

Legacy SOAP- / WCF-clients op iOS

Praat je iOS-app nog met een SOAP-endpoint? Plak de request-contractklasse en krijg de XML-envelope-body — makkelijker dan <code>NSXMLElement</code>-bomen met de hand bouwen.

Mac OS XML-workflows voeden

Oude AppleScript- / Automator- / XML-RPC-integraties verwachten XML. Plak het Objective-C-model, pak de XML en voer hem in de workflow — geen handmatige vertaling.

Veelgestelde vragen

Kan ik meerdere @interface-declaraties in één keer plakken?

Ja. Plak een heel headerbestand. Elke @interface komt door met geneste types uitgeklapt. Of je @interface nu expliciet ivars declareert (binnen { }) of de moderne alleen-@property-stijl gebruikt — beide werken hetzelfde.

Hoe worden @property-attributen behandeld?

Attributen als (nonatomic, copy), (strong), (weak), (readonly) en (assign) zijn metadata voor de runtime — ze veranderen de geserialiseerde vorm niet. De elementnaam is de property-naam. readonly-properties worden gewoon uitgezonden (ze hebben nog steeds een waarde). Berekende properties met custom getters worden behandeld als elke andere property.

En iVar-namen — krijg ik _underscore-elementen?

Nee. Als je property customerName heet en de backing-iVar _customerName is, dan is het XML-element <customerName>. De underscore is een Objective-C-conventie, geen wire-formaat. Wil je een element hernoemen, hernoem dan de @property zelf en plak opnieuw.

Hoe worden NSString, NSNumber, NSDecimalNumber, BOOL en NSDate behandeld?

NSString wordt een tekstknoop met correcte XML-escaping. NSNumber en NSDecimalNumber verliezen hun wrapper en worden gewone numerieke tekst. BOOL wordt true / false (of YES / NO als de broncode de plist-conventie gebruikt). NSDate komt eruit als ISO-8601-string. nil-waarden worden lege elementen in plaats van weggelaten te worden.

En NSArray, NSDictionary en geneste objecten?

NSArray<OrderItem *> wordt een container-element met één kind per item, genoemd naar het elementtype: <items><OrderItem/><OrderItem/></items>. NSDictionary wordt een container van <entry><key/><value/></entry>. Geneste objecten (een property waarvan het type een andere @interface is) worden ter plekke uitgeklapt met alle velden intact.

Wordt mijn code opgeslagen?

Je code gaat naar de backend voor conversie en wordt niet bewaard — we loggen de payload niet. Zoals altijd bij online tools: als de code echt gevoelig is, kijk hem nog even na voor je plakt.

Andere tools die handig kunnen zijn

Objective-C naar XML is maar één stukje van de puzzel. Deze tools passen er goed bij: