Salut j'ai un problème vraiment étrange j'ai fichier xml whit 21 éléments et je veux les ajouter au tableau mutable.Et l'analyseur 11 fois élément de départ, 11 fois foundCharacters mais seulement 10 fois la fin de l'élément et il se comporte comme il finit le dossier de xml. Mon programme ne tombe pas et ne fonctionne pas comme il devrait fonctionner. Mais quelquefois il fait ce qu'il devrait ainsi il lise tous les 21 éléments. Pourquoi?NsXmlParser ne fonctionne pas correctement
une partie de mon code:
/*this function start work whith xml file*/
- (void)parseXMLFile:(NSData *)adatok {
if (adatok != nil) {
BOOL success;
if (addressParser)
[addressParser release];
addressParser = [[NSXMLParser alloc] initWithData:adatok];
[addressParser setDelegate:self];
[addressParser setShouldResolveExternalEntities:YES];
success = [addressParser parse];
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
NSLog(elementName);
if ([elementName isEqualToString:@"turnover"]) {
objektObrat =[[Obrat1 alloc] init];
NSString *sth = [attributeDict objectForKey:@"transid"];
objektObrat.uID = sth;
}
if ([elementName isEqualToString:@"amount"]) {
osuma=YES;
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
//filling the object which will be saved in database
NSLog(string);
if (osuma) {
osuma=NO;
objektObrat.suma = [[NSString alloc] initWithString:string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
NSLog(elementName);
if ([elementName isEqualToString:@"turnover"]) {
turnOver = NO;
oid = NO;
if (objektObrat != Nil){
[obratDatabaseArray addObject:objektObrat];
[objektObrat release];
}
//add to array
[array addObject:vypisObratString];
}
if ([elementName isEqualToString:@"amount"]) {
osuma=NO;
}
}
J'espère que cela aide, au moins une clé où je devrais chercher le problème Merci
XML
<!ELEMENT turnovers (turnover*)>
<!ELEMENT turnover (amount, maturity-date, trans-date, counter-prefix, counter-account, counter-bank, counter-name, constant-symb, variable-symb, spec-symb, description, note, type, storno, rate, balance, currency, statement, message1, message2)> - detail obratu
<!ATTLIST turnover transid CDATA #REQUIRED>
<!ELEMENT amount (#PCDATA)> - suma
<!ELEMENT maturity-date (#PCDATA)> - dátum operácie
<!ELEMENT trans-date (#PCDATA)> - dátum transakcie
<!ELEMENT counter-prefix (#PCDATA)> - predčíslo protiúčtu
<!ELEMENT counter-account (#PCDATA)> - číslo protiúčtu
<!ELEMENT counter-bank (#PCDATA)> - kód banky
<!ELEMENT counter-name (#PCDATA)> - názov protiúčtu
<!ELEMENT constant-symb (#PCDATA)> - konštantný symbol
<!ELEMENT variable-symbol (#PCDATA)> - variabilný symbol
<!ELEMENT spec-symb (#PCDATA)> - špecifický symbol
<!ELEMENT constant-symb (#PCDATA)> - konštantný symbol
<!ELEMENT note (#PCDATA)> - poznamka
<!ELEMENT type (#PCDATA)> - typ obratu pozri číselník typy obratov v prílohe č. 1).
<!ELEMENT storno (#PCDATA)> - či je storno
<!ELEMENT rate (#PCDATA)> - kurz
<!ELEMENT balance (#PCDATA)> - zostatok
<!ELEMENT currency (#PCDATA)> - mena
<!ELEMENT statement (#PCDATA)> - číslo výpisu
<!ELEMENT message1 (#PCDATA)> - message 1
<!ELEMENT message2 (#PCDATA> - message 2
Plus de code associé aiderait. De plus, dans quelle langue se trouve votre document XML? –
ok je l'ai dans utf-8 et que dois-je coller ici à partir de mon code? – Csabi
Afficher le code XML en difficulté –