我使用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 *)节点 { if(node == nil){return nil; } return(GRSArrayOfSyncResponseTransactionJB *)[[GRSArrayOfSyncResponseTransactionJB alloc] initWithNode:node]; }
(id)initWithNode:(CXMLNode *)node { if(self = [super initWithNode:node]) { } 回归自我; }
(NSMutableString *)序列化 { 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];
返回s; }
(NSMutableString *)serializeAttributes { NSMutableString * s = [super serializeAttributes];
返回s; }
- (BOOL)isEqual:方法(ID)对象{ if(object!= nil&& [object isKindOfClass:[GRSArrayOfSyncResponseTransactionJB class]]){ return [[self serialize] isEqualToString:[object serialize]]; } 返回NO; }
- (NSUInteger)散列{ 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 version 1.2.289DT_MINUTESint1440ApplicationfalseCatherinehttps://dcstest.support.xerox.com:443 /download/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方法。但是,我现在明白什么是@&#34;类型&#34;。当我按原样使用代码时,它返回&#34; int&#34;对于
下面的行NSString * type = [Soap getNodeValue:element withName:@&#34; xsi:type&#34;];
任何帮助对我都非常有用。
谢谢,