こんにちは、私はxmlファイルの21の要素を持っていて、それらを可変配列に追加したいのですが、本当に奇妙な問題があります。パーサー11回の開始要素、11回のfoundCharactersですが、それはxmlファイルを終了するように振る舞います。私のプログラムは、run.Butのように落ちたり動かされたりすることはありません。 なぜですか?NsXmlParserが正常に動作しない
私のコードの一部:
/*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;
}
}
私はそれが役に立てば幸い、私は問題を探す必要があります少なくとも1つのキー おかげ
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
もっと関連するコードが役立ちます。また、あなたのXML文書はどの言語ですか? –
ok私はutf-8でそれを持っています。私はここから自分のコードから何を貼り付けますか? – Csabi
問題のあるXMLコードを表示 –