NSXMLParser를 사용하여 다음 XML 코드에서 다음 문자열 (sqrt (2 x)^(7/6) × (7/6)/(4/9))을 가져옵니다.NSXMLParser는 유니 코드 문자로 문자열을 나눕니다.
<pod title='Input'
scanner='Identity'
id='Input'
position='100'
error='false'
numsubpods='1'>
<subpod title=''>
<plaintext>sqrt(2 x)^(7/6)×(7/6)/(4/9)</plaintext>
</subpod>
</pod>
되지만 출력 문자열 (NSLog 이용)은 다음과 같은 결과를 반환 foundCharacters 함수에 의해 두 개의 스트링으로 분할되고 :
는2011-11-11 18 : 29 : 46.005 볼프람 API-을 테스트 [35959 : f803] sqrt (2 x)^(7/6) 2011-11-11 18 : 29 : 46.005 Wolfram API 테스트 [35959 : f803] × (7/6)/(4/9)
,451,515,
구문 분석에 대한 코드는 다음과 같습니다
-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string{
if (elementFound) {
[string canBeConvertedToEncoding:NSASCIIStringEncoding];
NSLog(@"%@", string);
}
}
그래서 내 질문은 왜 출력 문자열이 두 개의 문자열로 분리되고 있습니까?
그건 좋은 생각이지만 문제는 내가 -parser : didStartElement를 사용해야한다는 것입니다. 속성을 사용하여 얻을 수있는 속성 사전에 액세스해야하기 때문에 : didStartElement : (NSDictionary *) attributeDict하지만 -parser와 함께 할 수는 없습니다 : didEndElemet –
didStartElement, foundCharacters 및 didEndElement의 3 가지 방법을 모두 사용해야합니다. 첫 번째 두 개는 필요에 따라 데이터를 저장할 수 있지만 전체 요소가 필요한 경우 didEndElement까지 해당 데이터를 처리 할 수 없습니다. 이것은 NSXMLParser가 작동하는 방법입니다. 문제가있는 경우 TouchXML과 같은 XML 구문 분석에 대해 다른 접근 방식을 사용하는 것이 좋습니다. – Caleb
오키, 정말 고마워요! :디 –