英语翻译不是OP。原文如下。
君子,
我正在连接到Web服务器并获取具有以下格式的XML文件:
<?xml version="1.0" encoding="ISO-8859-1"?>
<programacao>
<agenda>
<data>17/02</data>
<cidade>Barueri</cidade>
<estado>SP</estado>
</agenda>
<agenda>
<data>19/02</data>
<cidade>Maringá</cidade>
<estado>PR</estado>
</agenda>
<agenda>
<data>17/03</data>
<cidade>Cubatão</cidade>
<estado>SP</estado>
</agenda>
</programacao>
到目前为止一切顺利。但是,当我尝试解析它时:
-(id)loadXMLByURL:(NSString *)urlString
{
minhaAgenda = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
parser.delegate = self;
[parser parse];
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSMutableString
*)elementName
namespaceURI:(NSMutableString *)namespaceURI qualifiedName:
(NSMutableString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"agenda"])
{
currentEvento = [Agenda alloc];
currentNodeContent = [[NSMutableArray alloc] init];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSMutableString
*)elementName namespaceURI:(NSMutableString *)namespaceURI
qualifiedName:(NSMutableString *)qName
{
if ([elementName isEqualToString:@"agenda"])
{
[minhaAgenda addObject:currentEvento];
[currentEvento release];
currentEvento = nil;
[currentNodeContent release];
currentNodeContent = nil;
}
if ([elementName isEqualToString:@"cidade"])
{
currentEvento.cidade = currentNodeContent;
}
if ([elementName isEqualToString:@"estado"])
{
currentEvento.estado = currentNodeContent;
}
if ([elementName isEqualToString:@"data"])
{
currentEvento.data = currentNodeContent;
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString*)string
{
currentNodeContent = [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", currentNodeContent);
}
...带有重音的单词会被截断。
我在日志中得到了几个换行符...就像单词Cubatão
在一行中显示为Cubat
而在下一行中显示为ão
,或Maringá
变为Maring
}在一个和á
在下一个。
我尝试了很多不同的东西,但是当我把它们放在桌子视图中时,我得到的就是切碎的碎片。我该怎么做才能解决这个问题?
原始
Senhores,
Estou realizando umconexãoemum servidor web,acessando um arquivo XML no seguinte formato:
<?xml version="1.0" encoding="ISO-8859-1"?>
<programacao>
<agenda>
<data>17/02</data>
<cidade>Barueri</cidade>
<estado>SP</estado>
</agenda>
<agenda>
<data>19/02</data>
<cidade>Maringá</cidade>
<estado>PR</estado>
</agenda>
<agenda>
<data>17/03</data>
<cidade>Cubatão</cidade>
<estado>SP</estado>
</agenda>
</programacao>
Atéaítudook .. acontece quequandofaçooparser com o seguinte:
-(id)loadXMLByURL:(NSString *)urlString
{
minhaAgenda = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
parser.delegate = self;
[parser parse];
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSMutableString
*)elementName
namespaceURI:(NSMutableString *)namespaceURI qualifiedName:
(NSMutableString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"agenda"])
{
currentEvento = [Agenda alloc];
currentNodeContent = [[NSMutableArray alloc] init];
}
}
-(void)parser:(NSXMLParser *)parser didEndElement:(NSMutableString
*)elementName namespaceURI:(NSMutableString *)namespaceURI
qualifiedName:(NSMutableString *)qName
{
if ([elementName isEqualToString:@"agenda"])
{
[minhaAgenda addObject:currentEvento];
[currentEvento release];
currentEvento = nil;
[currentNodeContent release];
currentNodeContent = nil;
}
if ([elementName isEqualToString:@"cidade"])
{
currentEvento.cidade = currentNodeContent;
}
if ([elementName isEqualToString:@"estado"])
{
currentEvento.estado = currentNodeContent;
}
if ([elementName isEqualToString:@"data"])
{
currentEvento.data = currentNodeContent;
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString
*)string
{
currentNodeContent = [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", currentNodeContent);
}
as palavras acentuadas ficam truncadas .. vejo quebradasemvárias linhas no Log ... tipo Cubat na outralinhaão... Maring e na outra linhaá
Játenteiváriosrecursos,mas quando jogo na Table View as palavras acentuadassóficamospedaços。 O que posso fazer para resolver esse problema?
答案 0 :(得分:1)
在-(void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString *)string
中,您将currentNodeContent
设置为string
。
我相信您要将string
附加到currentNodeContent
而不是替换它。
葡萄牙语翻译
Nométodo-(void)parser:(NSXMLParser *)parser foundCharacters:(NSMutableString *)string
vocêestásetandoo currentNodeContent
para o que vem na string
,mas fazendoissovocêperdeoquejáestavaláantes。 Provavelmenteessemétodoéchamadoseparado quando o parser acha um acento,por isso queospedaçosficamseparados。 Vocêdeveriafazer um append do currentNodeContent
com a string
ainvinçadesubstituir oquejátinhaantes。
答案 1 :(得分:0)