2011-10-02 50 views
0

我正在使用Sudzc(它使用TouchXML)來解析我的Web服務WSDL,現在我正在使用幾乎具有相同WSDL定義的多個Web服務。我編輯我的代碼使用這個,這是發生了什麼:TouchXML(Sudzc)並正確使用此數據

CXMLNode* element = [[Soap getNode: [doc rootElement] withName: @"Body"] childAtIndex:0]; 
output = [Soap deserialize:element]; 

和SOAP反序列化是如下:

// Deserialize an object as a generic object 
+ (id) deserialize: (CXMLNode*) element{ 
     return [element stringValue]; 
} 

我找回數據ILKE此當我登錄它:

{ 
    RetrieveSetResult =  { 
     Entities =   { 
      RequestData =    { 
       AccountCode =     { 
        IsDirty = false; 
        IsNothing = true; 
        NoRights = false; 
        Value = "<null>"; 
       }; 
       AccountContactEmail =     { 
        IsDirty = false; 
        IsNothing = true; 
        NoRights = false; 
        Value = "<null>"; 
       }; 
      }; 
     }; 
     SessionID = 40; 
    }; 
} 

如何以用戶友好的方式使用這些數據,所以我想能夠說出我想選擇和閱讀的字段。

回答

2

嘗試訪問他們像一本字典

NSDictionary *dic = [myXMLparsedObject valueForKey:@"RetrieveSetResult"]; 
int sesID = [[dic valueForKey:@"SessionID"] intValue]; 
NSDictionary *entis = [dic valueForKey:@"Entities"]; 
// … and so on 

通過的所有元素循環:

// for iOS prior 4.0 
NSArray *dicKeys = [xmlDic allKeys]; 
for (NSString *key in dicKeys) { 
    id obj = [xmlDic valueForKey:key]; 
} 

// way simpler in > 4.0 
[xmlDic enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { 

}]; 
在這兩種情況下

,您可以訪問每個keyobj值)

+0

要測試這一點! – Wesley

+0

這是一個很好的方向,我怎麼能夠通過requestData中的所有字段循環而不知道哪些字段在這裏呢? – Wesley

+0

NSDictionary * dic = [value valueForKey:@「RetrieveSetResult」]; NSString * sesId = [dic valueForKey:@「SessionID」]; NSDictionary * entis = [dic valueForKey:@「Entities」]; NSDictionary * reqd = [entis valueForKey:@「RequestData」]; (NSDictionary * data in reqd){ NSLog(@「Name:%@」,[data valueForKey:@「Value」]); } ---不起作用! – Wesley