【发布时间】:2012-04-30 03:49:23
【问题描述】:
我已使用 sudzc 为我现有的 Web 服务 (java) 生成带有 ARC 代码的目标 C。
-
在 java 中,我有一个名为 syncResponseJB 的对象,其中包含一组 SyncResponseTransactionJB[] 对象。当我看到 sudzc 创建的代码时,它创建了 3 个对象。 一个。 syncResponseJB.m 和 h,b。 ArrayOfSyncResponseJB.m 和 h 和 c。 SyncResponseTransactionJB。只有 C 包含我想要的所有属性/属性。 ArrayOfSyncResponseJB 只包含
@implementation GRSArrayOfSyncResponseTransactionJB
-
(id) 初始化 { if(self = [超级初始化]) {
} 回归自我; }
(GRSArrayOfSyncResponseTransactionJB*) newWithNode: (CXMLNode*) 节点 { if(node == nil) { 返回 nil; } return (GRSArrayOfSyncResponseTransactionJB*)[[GRSArrayOfSyncResponseTransactionJB alloc] initWithNode: node]; }
(id) initWithNode: (CXMLNode*) 节点 { if(self = [super initWithNode: node]) { } 回归自我; }
(NSMutableString*) 序列化 { return [自我序列化:@“ArrayOfSyncResponseTransactionJB”]; }
(NSMutableString*) 序列化:(NSString*) nodeName { NSMutableString* s = [NSMutableString 字符串]; [s appendFormat:@""]; [s appendString: [self serializeElements]]; [s appendFormat:@"", nodeName]; 返回 s; }
-
(NSMutableString*) 序列化元素 { NSMutableString* s = [超级序列化元素];
返回; }
-
(NSMutableString*) 序列化属性 { NSMutableString* s = [超级序列化属性];
返回; }
-(BOOL)isEqual:(id)object{ if(object != nil && [object isKindOfClass:[GRSArrayOfSyncResponseTransactionJB class]]) { return [[self serialize] isEqualToString:[object serialize]]; } 返回否; }
-(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 版本771911BHM000001AddServiceBillingProvisioningFor MDT 或 RM 版本 1.2.289DT_MINUTESint1440ApplicationfalseCatherinehttps://dcstest.support.xerox /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 方法。但是,我现在明白了@"type" 是什么。当我按原样使用代码时,它为下面的行返回“int”
NSString* type = [Soap getNodeValue:element withName:@"xsi:type"];
任何帮助都会对我非常有用。
谢谢,
【问题讨论】:
-
@"foo"表示法是 Objective-C 的快捷方式,用于创建内容设置为foo的 NSString。 -
谢谢亚历克斯。我的问题是,如果我将 @"type" 更改为我的元素名称 "@syncResponseTransactionJB",它会返回 Null。当我把它留给@“type”时,它返回int。我不确定它在我的 XML 中从哪里获得“int”,为什么它看不到我的 @"syncResponseTransactionJB",它是我的响应 xml 中的一个元素。换句话说,我应该在 @"XXX" 使用什么来获取我的元素属性值。