2009-12-03 4 views
9

방금이 문서를보고 도저히 대답 할 수 없었습니다.NSString 형식의 XML을 사용하는 NSXMLParser init

일부 XML을 HTTPS 연결을 통해 검색합니다. 나는 모든 종류의 인증을한다. 그래서 나는 멋진 스레드 방식으로 이것을 다루는 클래스들을 가지고있다.

<response> 
//some XML formatted test 
</response> 

이이 있음을 나타내도록 더 인코딩 = "UTF-8"들여 = "예"METHOD = "XML"또는 다른 헤더 블록이 없다는 것을 의미 결과가 같은 것을 간다있는 NSString이고 실제 XML이 아니라 NSString.

나는 [NSXMLParser initWithData : NSData]를 사용하여 파서를 구성 할 것이라고 추측하지만 NSXMLParser가 이해하고 구문 분석 할 적절한 NSData 객체에 NSML 형식의 텍스트 NSML을 형식화하거나 캐스트 할 수 있습니까?

, 그것은 의미가 희망 주어진 어떤 도움 :)

답변

29

당신은 dataUsingEncoding 방법을 사용을 NSData 객체에 문자열을 변환 할 수 있습니다 주셔서 감사합니다 :

NSData *data = [myString dataUsingEncoding:NSUTF8StringEncoding]; 

그런 다음 NSXMLParser이 먹이를 할 수 있습니다. 시간 NSXMLParser으로

+0

감사 필립, 나는 바로 이것을 시도 할 것이다. – RickiG

+0

완벽! 내가 뭘 찾고 있었는지. 고맙습니다. –

1

은 거의가 ;-)

XML을 것으로 예상 될 것 데이터 나 처리 명령 헤더는이 상황에서 선택 사항입니다 확신을 가지고있다. 을 NSData으로 가져 오는 방법은 인코딩을 지정하는 것입니다 (dataUsingEncoding: 사용).

(편집 : 나는 인코딩 열거 찾고 있었다, 그러나 필립 Leybaert 그것에 나를 이길하지만, 어쨌든 여기에 뭔가를 반복 : [nsString dataUsingEncoding:NSUTF8StringEncoding]) 나는이 방법으로 XML의 NSString의를 통과 한

을 전에 아무런 문제가 없었다.

이 질문과 관련해서는 아니지만, iPhone 컨텍스트에서 XML 구문 분석의 주제에 관해서는 this blog entry of mine도 재미있을 것입니다.

+0

선택 사항이며 예, 1.0/UTF-8이면 일반적으로 생략해야합니다. 비록 기술적으로 XML 선언은 마치 하나처럼 보이지만 처리 명령이 아닙니다. – bobince

+0

예, 누군가가 그것에 대해 생각할 것입니다. 더 나은 방법을 생각할 수는 없지만 정확성은 중요합니다. – philsquared

+0

Phil 감사합니다 :) 나는 그것을 재미있는 찾았어요! 특히 SAX의 일부를 위쪽으로 추상화하면 확실하게 유용 할 것입니다. – RickiG

1

헤더는 선택 사항이지만 필요한 경우 적절한 헤더를 직접 삽입 할 수 있습니다

NSString *header = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; 
NSString *xml = [NSString stringWithFormat:@"%@\n%@", header, response); 
NSData *data = [xml dataUsingEncoding:NSUTF8StringEncoding]; 
NSXMLParser *praser = [NSXMLParser initWithData:data]; 
+0

제안/코드 notnoop 주셔서 감사합니다! 제 생각에는 파싱으로 계속 진행 하겠지만, "진짜"xml 만 받아들이는 객체를이 객체로 전달한다면이 방법이 될 것입니다. – RickiG