簡體   English   中英

如何在iPhone編程中解析SOAP xml響應

[英]How to parse SOAP xml response in iPhone programming

我無法解析肥皂響應,我已經嘗試了許多方法,但是沒有解決我的問題,我需要USERNAME和PASSWORD的值。 肥皂請求后,我得到以下回應:

<?xml version="1.0" encoding="utf-8"?>
<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>
<AuthenticateResponse xmlns="http://tempuri.org/">
<AuthenticateResult>
<DocumentElement>   
<Status>
<USERNAME>True</USERNAME>
<PASSWORD>true</PASSWORD>
</Status>
</DocumentElement>
</AuthenticateResult>
</AuthenticateResponse>
</soap:Body>
</soap:Envelope>

這是我的代碼:

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName attributes: (NSDictionary *)attributeDict
{

 if ( [elementName isEqualToString:@"AuthenticateResponse"]||[elementName    
     isEqualToString:@"AuthenticateResult"] || [elementName   isEqualToString:@"DocumentElement"])
 {
 statusArray = [[NSMutableArray alloc] init];
 }
else if ([elementName isEqualToString:@"Status"])
{
    authenticate = [[Authenticate alloc] init];
}
else if ([elementName isEqualToString:@"USERNAME"])
{
    currentElementValue = [[NSMutableString alloc] init];
}
else if ([elementName isEqualToString:@"PASSWORD"])
{
    currentElementValue = [[NSMutableString alloc] init];
}

}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if (currentElementValue) 
{
    [currentElementValue appendString:string];
}

}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI: (NSString *)namespaceURI qualifiedName:(NSString *)qName
{

if( [elementName isEqualToString:@"USERNAME"])
{
    authenticate.userName = currentElementValue;
}
else if ([elementName isEqualToString:@"PASSWORD"])
{
    authenticate.strAuthenticate = currentElementValue;
}
 else if ([elementName isEqualToString:@"Status"]) {
     [statusArray addObject:authenticate];
}


}

我如何獲取用戶名和密碼的值,有人可以幫我解析它。 提前致謝。

嘗試這個:

將2個屬性添加到您的班級。

@property (nonatomic, strong) NSString *elementValue;
@property (nonatomic, strong) NSMutableArray *authenticationValues;

用以下內容替換當前的實現:

- (void)parseXML:(NSData *)xmlData {
    self.authenticationValues = [NSMutableArray array];
    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:xmlData];
    parser.delegate = self;
    [parser parse];
    NSLog(@"Authentication values: %@", self.authenticationValues);
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    // Keep track of the current element value
    self.elementValue = string;
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    // If the element was 'username' or 'password', add the value to the authenticationValues array
    if ([elementName isEqualToString:@"USERNAME"] ||
        [elementName isEqualToString:@"PASSWORD"]) {
        [self.authenticationValues addObject:self.elementValue];
    }
}

要解析文件,請執行方法parseXML:運行此方法時,您應該在控制台上看到以下輸出:

Authentication values: (
    True,
    true
)

這是USERNAME和PASSWORD的值。

請使用示例Web服務查看為iOS / OSX准備的演示。

它使用swift-SOAP請求創建者和響應解析器。

[演示] [1]

使用Alamofire和SWXMLHash庫完成

謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM