2010-01-25 228 views
3

我是iphone开发新手。我想解析一个xml页面。源代码包含一些htmls标签。这个html标签显示在我的模拟器中。我想过滤标签并显示只有XML的content.The SORCE代码是这样显示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> 

我想“在一周以来的......”来显示,而不是HTML tags.Please帮我out.Thanks

回答

2

如前所述,在其他答案中,xml中的数据位于CDATA块内 - 这意味着当您获取标签的内容时,XML解析器将无法摆脱“By: “对你来说有点 - 就它而言,这全是文字。但是,如果您要在UIWebView(而不是UILabel等)中以HTML的形式显示它,则可以将样式表添加到使'By:'隐藏的字符串的起始位置。喜欢的东西

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]; 

其中descriptionString是在XML的<description>标签的内容。

但是这种方法有点笨重,我会努力从服务器上获得一些清洁的xml!

至于实际解析xml,请尝试NSXMLParser对象。

1

我看到所有的标签都是HTML。另外,还有一个CDATA定义了它的内容应该被视为文本而不是XML。而对于XML解析 - 有几个可用的XML解析器为iPhone:

  • TouchXML
  • 给XPathQuery

我更喜欢后者。 我不确定解析器如何处理CDATA。 也许你将不得不解析两次 - 第一次为获得CDATA内容和解析内容第二次......

2

一个CDATA块里面的内容被认为是像文本(XML字符的具体<,&,>等将被忽略并视为普通字符)。如果用于显示文本的文本画布接受html,请阅读description标签的文本节点,并将其分配给画布的innerHTML等效项。