2013-08-05 6 views
0

Je suis en train d'analyser un fichier XML avec AFXMLRequestOperation mais l'analyse syntaxique arrête une fois trouvé la chaîne « c », je ne sais pas exactement comment analyser ce pice de chaîne Heres le code:erreur objectif d'encodage XML d'analyse syntaxique c

AFXMLRequestOperation * op = [AFXMLRequestOperation XMLParserRequestOperationWithRequest:req success:^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) 
{ 
    NSLog(@"XML document %@", XMLParser); 
    NSLog(@"response %@",response); 

    XMLParser.delegate = self; 
    [XMLParser parse]; 

}failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) { 
    NSLog(@"response %@",response); 
    NSLog(@"Error %@", error); 
}]; 


- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{  
    NSString *correctString = [NSString stringWithCString:[string cStringUsingEncoding:NSISOLatin1StringEncoding] encoding:NSUTF8StringEncoding]; 
    NSLog(@"string %@",correctString); 
} 

et voici le XML:

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://www.w3.org/2005/08/addressing"><env:Header><wsa:MessageID>urn:E350F180FDEF11E2BF9C23C51C52395C</wsa:MessageID><wsa:ReplyTo><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address><wsa:ReferenceParameters><instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">66a9395e96ada9e8:-78e4245e:1401282173b:-8000-0000000000210667</instra:tracking.ecid></wsa:ReferenceParameters></wsa:ReplyTo><wsa:FaultTo><wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address><wsa:ReferenceParameters><instra:tracking.ecid xmlns:instra="http://xmlns.oracle.com/sca/tracking/1.0">66a9395e96ada9e8:-78e4245e:1401282173b:-8000-0000000000210667</instra:tracking.ecid></wsa:ReferenceParameters></wsa:FaultTo></env:Header><env:Body><TransactionResponse xmlns:aia="http://www.oracle.com/XSL/Transform/java/oracle.apps.aia.core.xpath.AIAFunctions" xmlns:ns0="http://www.site.com.br/" xmlns="http://www.site.com.br/"><ns0:Acquirer>ECOMMERCE</ns0:Acquirer><ns0:TransactionId>00</ns0:TransactionId><ns0:Complement>192071</ns0:Complement><ns0:AdditionalComplement>123456</ns0:AdditionalComplement><ns0:ResponseCode>00</ns0:ResponseCode><ns0:ResponseMessage>Transação Autorizada</ns0:ResponseMessage><ns0:TransactionStatus>PAGO</ns0:TransactionStatus><ns0:TransactionDate>2013-08-05T13:55:37.602-03:00</ns0:TransactionDate><ns0:OrderNumber>0000014</ns0:OrderNumber></TransactionResponse></env:Body></env:Envelope> 
+0

double possible de [NSXMLParser ne reçoivent pas toute l'étiquette si la balise a l'accent] (http://stackoverflow.com/questions/14986699/nsxmlparser-dont-get-all-the-tag-if -le-tag-have-accent) - Réponse courte: vous devez * ajouter * les chaînes dans 'foundCharacters'. –

+0

Doesnt work @MartinR déjà essayé cela. – darkman

+0

Est-ce que 'parse' renvoie NO? Qu'est-ce que 'parserError'? Et pourquoi la conversion d'encodage? –

Répondre

0

Vous pouvez essayer cela, ce travail pour moi.

 
const char *cc= [currentElementValue cStringUsingEncoding:NSISOLatin1StringEncoding]; 
NSString *d_string = [[NSString alloc]initWithCString:cc encoding:NSUTF8StringEncoding]; 

Questions connexes