我已经使用 sudzc 为我现有的 Web 服务 (java) 生成带有 ARC 代码的目标 C。
在 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*) 序列化 { 返回 [self 序列化:@"ArrayOfSyncResponseTransactionJB"]; }
(NSMutableString*) 序列化:(NSString*) nodeName { NSMutableString* s = [NSMutableString string]; [s appendFormat:@"<%@", nodeName]; [s appendString: [self serializeAttributes]]; [s appendString:@">"]; [s appendString: [self serializeElements]]; [s appendFormat:@"", nodeName]; 返回 s; }
(NSMutableString*) 序列化元素 { NSMutableString* s = [超级序列化元素];
返回 s; }
(NSMutableString*) serializeAttributes { NSMutableString* s = [super serializeAttributes];
返回 s; }
-(BOOL)isEqual:(id)object{ if(object != nil && [object isKindOfClass:[GRSArrayOfSyncResponseTransactionJB class]]) { return [[self serialize] isEqualToString:[object serialize]]; } 返回否;}
-(NSUInteger)hash{ 返回 [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 版本771911BHM000001AddServiceBillingProvisioningFor MDT 或 RM 版本 1.2.289DT_MINUTESint1440ApplicationfalseCatherinehttps://dcs43/support.xerox.com: dcs.jarTest MDT 版本771912BHM000001AddServiceSupplies
但是当我在这一行之后打印输出时,
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 方法。但是,我现在明白了@"type" 是什么。当我按原样使用代码时,它为下面的行返回“int”
NSString* type = [Soap getNodeValue:element withName:@"xsi:type"];
任何帮助对我来说都会非常有用。
谢谢,