Tôi đang sử dụng NSXMLParser để phân tích một xml từ một url (mã của tôi là gần như giống hệt nhau như here)NSXMLParser không thể phân tích ký tự đặc biệt (dấu)
Một số yếu tố chứa các ký tự đặc biệt như "á "làm cho một từ thích được chia thành hai (á và ndre).
Đây là loadXMLByURL tôi
-(id) loadXMLByURL:(NSString *)urlString{
tickets = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
return self;}
Tôi khá chắc chắn rằng đó là vì mã hóa không được thiết lập (Tôi nghĩ rằng nó cần phải được NSUTF8StringEncoding) nhưng tôi không chắc chắn nơi/làm thế nào để áp dụng nó.
[UPDATE] Phần còn lại của mã của tôi ...
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if ([elementname isEqualToString:@"ticket"])
{
currentTicket = [Ticket alloc];
}
}
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementname isEqualToString:@"name"])
{
currentTicket.name = currentNodeContent;
}
else if ([elementname isEqualToString:@"title"])
{
currentTicket.title = currentNodeContent;
}
else if ([elementname isEqualToString:@"status"])
{
currentTicket.status = currentNodeContent;
}
else if ([elementname isEqualToString:@"ticket"])
{
[tickets addObject:currentTicket];
[currentTicket release];
currentTicket = nil;
[currentNodeContent release];
currentNodeContent = nil;
}
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
[UPDATE 2] mẫu xml ...
<RB>
<list>
<ticket>
<name>Andrew Ford</name>
<title>3rd release</title>
<status>1</status>
</ticket>
<ticket>
<name>David Jenkins</name>
<title>3rd release</title>
<status>0</status>
</ticket>
<ticket>
<name>Luis gomez ándre</name>
<title>3rd release</title>
<status>1</status>
</ticket>
</list>
</RB>
Tôi là người mới sử dụng Obj-C, nhưng dường như với tôi rằng bạn có thể chuyển đổi dữ liệu thành NSString, mã hóa thành UTF8 [như được hiển thị ở đây] (http://stackoverflow.com/questions/2467844/ convert-utf-8-encoded-nsdata-to-nsstring) và chuyển nó cho NSXMLParser? – inkedmn
Tôi sử dụng NSXMLParser rất nhiều và chưa gặp phải vấn đề đó. Bạn có thể đăng phần của mã xử lý văn bản XML không? –
Đăng phần còn lại của mã của tôi. Tôi tự hỏi, nếu vấn đề bây giờ nằm trong foundCharacters? –