0

sudzc を使用して、既存の Web サービス (Java) の ARC コードで目的の C を生成しました。

  1. 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];

    }

  2. syncResponseJB を実行すると、ArrayOfSyncResponseJB のみが表示され、現在は SyncResponseTransactionJB が表示されます。ArrayOfSyncResponseJB の使用についてはよくわかりません。Java には同等のクラスがありません。

  3. 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 番目のセグメントも取得するにはどうすればよいですか?

  1. 別の角度から、deserializeToDictionary メソッドを使用できるかどうかを確認しようとしています。ただし、@「タイプ」とは何かを理解できました。コードをそのまま使用すると、下の行に「int」が返されます

    NSString* type = [Soap getNodeValue:element withName:@"xsi:type"];

どんな助けでも私にとって非常に役に立ちます。

ありがとう、

4

1 に答える 1

1

これを見てください。SudzCのバグだと思います...

于 2012-05-02T14:01:43.270 に答える