0
我正在處理所有用戶數據都依賴於Web服務的項目。 Web服務開發者發送xml作爲我的soap請求的響應。iOS中的動態Xml解析
在某些情況下,Web服務開發人員從相同Web服務的不同類生成xml。 在這種情況下,用不同的Element標籤生成xml。這裏登錄是我的web服務,並獲得在不同的情況下
//============Response 1====================Success========================================
<soap:Envelope xmlns:soap="http://xyzs.com xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<LoginUserResponse xmlns="http://xyz.co/">
<LoginUserResult> —————————————————————>StartElement
<ArrayOfUserLoginComplexType xmlns="">
<UserLoginComplexType> ——————————————————————>RowElement
<UserId>1</UserId>
<Role>User</Role>
<UserName>abc</UserName>
<Email>[email protected]</Email>
<ZipCode>0</ZipCode>
<IsRead>false</IsRead>
<IsWrite>false</IsWrite>
<IsDelete>false</IsDelete>
<NoOfUser>0</NoOfUser>
<isPediaPurchased>false</isPediaPurchased>
<isPaymentDone>false</isPaymentDone>
</UserLoginComplexType>
</ArrayOfUserLoginComplexType>
</LoginUserResult>
</LoginUserResponse>
</soap:Body>
</soap:Envelope>
//============Response 2======================Failuer=======================================
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<LoginUserResponse xmlns="http://tempuri.org/">
<LoginUserResult> —————————————————————>StartElement
<ctMessageMst xmlns=「」>———————————————————— > RowElement
<MessageID>13</MessageID>
<TitleName>Xyz</TitleName>
<ProductID>0</ProductID>
<MessageText>Hi there</MessageText>
<MessageType>E</MessageType>
<Date>2014-07-15</Date>
</ctMessageMst>
</LoginUserResult>
</LoginUserResponse>
</soap:Body>
</soap:Envelope>
//--------XML Parser Code-----------------------------------------------------------------
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"GetAllMessageListResult"]) {
[email protected]"ctMessageMst";
[self CreateDictionary];
}
else if([elementName isEqualToString:@"LoginUserResult"]) {
[email protected]"UserLoginComplexType"; //Hardcode condition that i have implemented
[self CreateDictionary];
}.....
在我的項目我做了硬編碼爲Rowelement兩種不同的反應,但我想它的動態我怎麼能做到這一點動態impelementation?
我已經參考蘋果示例代碼,但在該代碼也推動硬編碼條件。
案例1.在1效應初探我正在----(UserLoginComplexType)作爲 Rowelement
案例2.在響應2我正在----(ctMessageMst的xmlns = 「」 )作爲 Rowelement
在我的XML解析器的代碼,我有靜態實施,這將無法工作在案例2 我沒有得到知道該怎麼做Rowelement名。
這不是一個普通的XML數據,它的soap服務需要以不同的方式處理。嘗試用肥皂找到ios,有很多客戶可用。我知道的是http://sudzc.com/,它使用您的soap服務生成一個xcode項目,並執行所有的解析和處理。 – iphonic