私の質問はかなり簡単です。私はXMLを解析しており、解析手順はNSXMLでかなりうまくいった。私はいくつかの配列のすべての声を入れて、今ではそれで文字列を構成しています。私がしようとしていたObjective-C - NSXMLはどこに行かないのですか?
Text 01
Text 02
:私の問題は...私はこのようにXMLを記述する場合、その
<main>
<introductions>
<text>Text 01</text>
<text>Text 02</text>
</introductions>
</main>
です...と私は、私が入手ストーリーボード上のラベルで2つの文字列を追加します把握するために、新しい行がから来たので、私はいくつかのことをしようと、私は、このXMLが...
<main>
<introductions>
<text>Text 01</text> <text>Text 02</text>
</introductions>
</main>
... ...
を生成することを発見した場合これはなぜですか?なぜNSXMLがタグの外にあるものを読み込んでいるのですか?どうすればこれを避けることができますか?
ことができますすることができた場合、それは私がパーサを初期化する方法は次のとおりです。
NSURL *xml = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"frasi" ofType:@"xml"]];
xmlParser = [[NSXMLParser alloc] initWithData:[NSData dataWithContentsOfURL:xml]];
[xmlParser setDelegate:self];
[xmlParser setShouldProcessNamespaces:NO];
[xmlParser setShouldReportNamespacePrefixes:NO];
[xmlParser setShouldResolveExternalEntities:NO];
[xmlParser parse];
そしてこれが(私の本当のXMLのための)残りのコードです:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([currentElement isEqualToString:@"introduzioni"] || [currentElement isEqualToString:@"soggetti"]
|| [currentElement isEqualToString:@"verbi"] || [currentElement isEqualToString:@"luoghi"]){
++depth;
//[self showCurrentDepth];
NSLog(@"Sezione %@", elementName);
sezione = [[NSString alloc] init];
sezione = currentElement;
}
else if ([currentElement isEqualToString:@"testo"]){
currentName = [[NSMutableString alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"introduzioni"] || [elementName isEqualToString:@"soggetti"]
|| [elementName isEqualToString:@"verbi"] || [elementName isEqualToString:@"luoghi"]){
--depth;
//[self showCurrentDepth];
}
else if ([elementName isEqualToString:@"testo"]){
if (depth == 1){
NSLog(@"Testo: %@", currentName);
if([sezione isEqualToString:@"introduzioni"])
[arrayIntroduzioni addObject:currentName];
if([sezione isEqualToString:@"soggetti"])
[arraySoggetti addObject:currentName];
if([sezione isEqualToString:@"verbi"])
[arrayVerbi addObject:currentName];
if([sezione isEqualToString:@"luoghi"])
[arrayLuoghi addObject:currentName];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"testo"]){
[currentName appendString:string];
}
}
私たちにいくつかのコードを見せてください。テキスト値を追加する方法とその読み方 – Lefteris
@Lefteris:コードが大量であり、XMLが問題のために特別なサンプルになっているので、かなり難しいです。私はそれに合うようにすべてのコードを再度変更する必要があります。私は構文解析が大丈夫であることを保証することができます。私はちょうど "stringAppendByString"を使用して文字列を追加し、私は期待していない間にXMLを変更するように動作が変化します。それは問題です...ところで、私はあなたを助けるかもしれないコードをいくつか追加しようとします。 –
アルベルトあなたは、コードなしであなたを助けることがさらに困難であると推測できます。コード全体を表示するのではなく、コード全体を表示してください。 – Lefteris