Что такое @"type" в [Soap getNodeValue: элемент withName:@"type"]; Sudzc сгенерированный код
Я использовал sudzc для генерации цели C с кодом ARC для моего существующего веб-сервиса (Java).
В Java у меня есть объект с именем syncResponseJB, который содержит массив объектов SyncResponseTransactionJB[]. Когда я вижу код, созданный sudzc, он создал 3 объекта. а. syncResponseJB.m и h, b. ArrayOfSyncResponseJB.m и h и c. SyncResponseTransactionJB. Только C содержит все атрибуты / свойства, которые я хочу. ArrayOfSyncResponseJB просто содержит
@implementation GRSArrayOfSyncResponseTransactionJB
(id) init {if (self = [super init]) {
} вернуть себя; }
(GRSArrayOfSyncResponseTransactionJB *) newWithNode: (CXMLNode *) node {if (node == nil) {return nil; } return (GRSArrayOfSyncResponseTransactionJB *) [[GRSArrayOfSyncResponseTransactionJB alloc] initWithNode: node]; }
(id) initWithNode: (CXMLNode *) node {if (self = [super initWithNode: node]) {} return self; }
(NSMutableString *) serialize {return [self serialize: @"ArrayOfSyncResponseTransactionJB"]; }
(NSMutableString *) serialize: (NSString *) имя_узла { NSMutableString* s = [строка NSMutableString]; [s appendFormat: @"<% @", имя_узла]; [s appendString: [self serializeAttributes]]; [s appendString: @">"]; [s appendString: [self serializeElements]]; [s appendFormat: @"", имя_узла]; возврат с; }
(NSMutableString *) serializeElements { NSMutableString* s = [супер serializeElements];
возврат с; }
(NSMutableString *) serializeAttributes { NSMutableString* s = [super serializeAttributes];
возврат с; }
- (BOOL) isEqual: (id) object {if (object! = Nil && [object isKindOfClass:[GRSArrayOfSyncResponseTransactionJB class]]) { return [[self serialize] isEqualToString:[object serialize]]; } вернуть NO; }
- (NSUInteger) hash {return [Soap generateHash: self];
}
Когда я делаю syncResponseJB., Он показывает только ArrayOfSyncResponseJB и теперь SyncResponseTransactionJB. Я не уверен насчет использования ArrayOfSyncResponseJB. У меня нет эквивалентного класса в Java.
Если я игнорирую ArrayOfSyncResponseJB и использую SyncResponseTransactionJB, он будет работать частично. Под частичным я подразумеваю, что мой фактический XML-ответ
Подготовка для MDT или версии RM 1.2.289DT_MINUTESint1440ApplicationfalseCatherinehttps://dcstest.support.xerox.com:443/download/dcs.jarTest Версия MDT 771911BHM000001AddServiceBillingProvisioning Для загрузки MDT или MDT мин. dcs.jarTest MDT Version771912BHM000001AddServiceSupplies
Но когда я печатаю вывод после этой строки,
output = [deserializeTo initWithNode: element];
он печатает только первую половину xml, и это единственные данные, которые я получаю.
po [output serializeElements]
(id) $4 = 0x06c47610 <syncResponseTrans><callType>Provisioning</callType> <dcsBundleDescriptor><bundleDesc>For MDT or RM version 1.2.2</bundleDesc><bundleId>89</bundleId><bundleParms><bundleParmsProperties></bundleParmsProperties></bundleParms><bundleType>Application</bundleType><downloadable>false</downloadable><submitterName>Catherine</submitterName><urlOfBundle>https://dcstest.support.xerox.com:443/download/dcs.jar</urlOfBundle><version>Test MDT Version</version></dcsBundleDescriptor><orderId>77191</orderId><orderItemId>1</orderItemId><serialNo>BHM000001</serialNo><serviceActionParms><serviceAction>AddService</serviceAction><serviceActionParmsProperties></serviceActionParmsProperties></serviceActionParms><serviceName>Billing</serviceName></syncResponseTrans>
Как я могу также получить второй сегмент XML?
С другой стороны, я пытаюсь понять, смогу ли я использовать метод deserializeToDictionary. Тем не менее, я теперь понимаю, что такое @"тип". Когда я использую код как есть, он возвращает "int" для строки ниже
NSString* type = [Soap getNodeValue: элемент withName:@"xsi:type"];
Любая помощь будет очень полезна для меня.
Спасибо,