2013-08-21 2 views
1

NSXMLParser를 사용하여 구문 분석 할 XML 문서가 있습니다. 포함 할 수있는 태그 중 하나는 <html>이며, 구문 분석 된 표현에서 나는 그 태그의 내용을 축 어적으로 원합니다. 그러나 문서를 구문 분석 할 때 html 태그 안의 각 태그의 시작, 끝 및 내용에 대한 대리자 메서드가 호출됩니다.NSXMLParser를 사용하여 일부 섹션을 분석되지 않은 채로 둘 수 있습니까?

CDATA 태그를 추가하기 위해 문서 제공 업체를 찾을 수 없습니다. NSXMLParser 이외의 다른 것을 사용하여 문서를 파싱 할 수도 없습니다.

파서에게 HTML 태그의 내용을 CDATA로 취급하고 다른 태그가 포함되어 있어도 파서를 분석하지 않도록 남겨 둘 수있는 방법이 있습니까?

+1

이것은 효율적이지 않고 단지 제안 일 수 있습니다. 왜'NSXMLParser' 전에 직접 CDATA를 추가하지 않겠습니까? 데이터를 문자열로 변환하고 필요한 수정을 수행 한 다음 다시 데이터로 변환하여 파서로 전달합니다. – Amar

답변

1

HTML 피드에 따라 XML 피드의 소유자가 잘못 될 수 있기 때문에 XML 피드 소유자가 수정할 수 없다는 것은 너무 나쁩니다. 실제로 XML 문서 인 경우에는 CDATA에 포장하거나을 모두 &lt;으로, >&gt;으로 바꿔야합니다.

정확히 말하자면, HTML이 필요하고 CDATA 또는 적절한 문자 교체가없는 HTML이 포함 된 XML 태그 만 있으면 NSXMLParser을 통해 실행하려고 시도하지 않을 수도 있습니다. 성공적인 구문 분석은 포함 된 HTML의 특성에 달려있다). NSScanner 또는 NSRegularExpression을 사용하여 HTML을 감싸는 XML 열기 및 닫기 태그 사이의 텍스트를 모두 추출 할 수 있습니다.

NSXMLParser (필요한 HTML 외에 다른 것들이 있기 때문에)을 사용하고 싶다면 직접 CDATA에있는 HTML을 포장하고 NSData을 수동으로 변경하십시오.

구문 분석하려는 문서가 XML이 아니라 HTML 일 경우 XML 파서로 구문 분석하면 안됩니다. Ray Wendlich 사이트의 Galloway의 기사 How to Parse HTML on iOS에서 설명한대로 HPPLE과 같은 HTML 파서를 사용해야합니다.

+0

NSData가 NSXMLParser를 치기 전에 NSData를 수정하는 것은 내가 한 방법입니다. 감사. – Simon

관련 문제