2010-01-25 6 views
3

저는 iphone development를 처음 사용합니다. XML 페이지를 파싱하고 싶습니다. 소스 코드에 일부 html 태그가 포함되어 있습니다.이 html 태그가 시뮬레이터에 표시됩니다. 태그를 필터링하고 표시하고 싶습니다. 내가 원하는 XML 페이지의 내용 표시

  <description> 
      <![CDATA[<br /><p class="author"><span class="by">By: </span>By Sydney Ember</p><br><p>In the week since an earthquake devastated Haiti ...</p>]]> 
      </description> 

같은 XML 만 content.The의 SORCE 코드이다 "는 이후 주에 ..."표시가 아니라 HTML을 tags.Please 날 ​​

답변

2

다른 답변에서 이전에 말했듯이 xml의 데이터는 CDATA 블록 안에 있습니다. 즉, 태그의 내용을 가져올 때 XML 구문 분석기가 'By : '당신을 위해 조금 - 그것이 염려된다면, 그것은 모두 텍스트 일뿐입니다.

그러나 UILabel 대신 UIWebView 내부에 HTML로 표시하려면 'By :'을 숨긴 문자열 시작 부분에 스타일 시트를 추가하면됩니다. descriptionString이 XML의 <description> 태그의 내용입니다

NSString *cssString = @"<style type='text/css'>span.by { display:none; }</style>" 
NSString *html = [NSString stringWithFormat:@"<html><head>%@</head><body>%@</body></html>", cssString, descriptionString]; 
[webView loadHTMLString:html baseURL:nil]; 

비슷 해요.

그러나이 방법은 약간 무거 우므로 서버에서 클리너 XML을 얻으려고 열심히 노력할 것입니다!

실제로 xml을 구문 분석하는 경우 NSXMLParser 개체를 사용해보십시오.

1

I를를 탈 수 있도록 할 모든 태그가 HTML임을 확인하십시오. 또한 내용이 XML이 아닌 텍스트로 간주되어야 함을 정의하는 CDATA가 있습니다. 는 XML 파싱에 관해서 - 가능한 몇 XML 파서는 아이폰이 있습니다 :

  • TouchXML
  • XPathQuery

나는 후자를 선호합니다. 파서가 CDATA를 어떻게 처리할지 잘 모르겠습니다. 어쩌면 당신은 두 번 구문 분석해야합니다 - CDATA 블록 내부

2

내용이 같은 텍스트 (XML 특정 문자로 간주됩니다 ... CDATA 내용과 콘텐츠를 구문 분석에 대한 두 번째 시간을 얻기 위해 처음 <, &> 등은 무시되고 일반 문자로 취급됩니다). 텍스트를 표시하는 데 사용하는 텍스트 캔버스가 html을 허용하면 description 태그의 텍스트 노드를 읽고이를 캔버스에 해당하는 innerHTML에 할당합니다.