sudzc を使用して、既存の Web サービス (Java) の ARC コードで目的の C を生成しました。
Java には、SyncResponseTransactionJB[] オブジェクトの配列を含む syncResponseJB というオブジェクトがあります。sudzc によって作成されたコードを見ると、3 つのオブジェクトが作成されています。a. syncResponseJB.m および h、b. ArrayOfSyncResponseJB.m および h および c. SyncResponseTransactionJB. 必要なすべての属性/プロパティが含まれているのは C だけです。ArrayOfSyncResponseJB には、
@実装 GRSArrayOfSyncResponseTransactionJB
(id) init { if(self = [super init]) {
自分自身を返します。}
(GRSArrayOfSyncResponseTransactionJB*) newWithNode: (CXMLNode*) ノード { if(node == nil) { return nil; return (GRSArrayOfSyncResponseTransactionJB*)[[GRSArrayOfSyncResponseTransactionJB alloc] initWithNode: ノード]; }
(id) initWithNode: (CXMLNode*) ノード { if(self = [super initWithNode: node]) { } return self; }
(NSMutableString*) serialize { return [self serialize: @"ArrayOfSyncResponseTransactionJB"]; }
(NSMutableString*) serialize: (NSString*) nodeName { NSMutableString* s = [NSMutableString string]; [s appendFormat: @"<%@", nodeName]; [s appendString: [self serializeAttributes]]; [s appendString: @">"]; [s appendString: [self serializeElements]]; [s appendFormat: @"", nodeName]; 戻り値; }
(NSMutableString*) serializeElements { NSMutableString* s = [super serializeElements];
戻り値; }
(NSMutableString*) serializeAttributes { NSMutableString* s = [super serializeAttributes];
戻り値; }
-(BOOL)isEqual:(id)object{ if(object != nil && [object isKindOfClass:[GRSArrayOfSyncResponseTransactionJB クラス]]) { return [[self serialize] isEqualToString:[object serialize]]; いいえを返します。}
-(NSUInteger)hash{ return [Soap generateHash:self];
}
syncResponseJB を実行すると、ArrayOfSyncResponseJB のみが表示され、現在は SyncResponseTransactionJB が表示されます。ArrayOfSyncResponseJB の使用についてはよくわかりません。Java には同等のクラスがありません。
ArrayOfSyncResponseJB を無視して SyncResponseTransactionJB を使用すると、部分的に機能します。私が部分的に言いたいのは、私の実際の応答 XML は
ProvisioningFor MDT または RM バージョン 1.2.289DT_MINUTESint1440ApplicationfalseCatherinehttps://dcstest.support.xerox.com:443/download/dcs.jarTest MDT Version771911BHM000001AddServiceBillingProvisioningFor MDT または RM バージョン 1.2.289DT_MINUTESint1440ApplicationfalseCatherinehttps://dcstest.support.43/download/download/4 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 の 2 番目のセグメントも取得するにはどうすればよいですか?
別の角度から、deserializeToDictionary メソッドを使用できるかどうかを確認しようとしています。ただし、@「タイプ」とは何かを理解できました。コードをそのまま使用すると、下の行に「int」が返されます
NSString* type = [Soap getNodeValue:element withName:@"xsi:type"];
どんな助けでも私にとって非常に役に立ちます。
ありがとう、