显示xml页面的内容

时间:2010-01-25 08:59:19

标签: iphone html xml-parsing

我是iphone开发的新手。我想解析一个xml页面。源代码包含一些htmls标签。这个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>

我希望“在...之后的一周内”显示而不是html标签。请帮帮我。谢谢

3 个答案:

答案 0 :(得分:2)

CDATA块内的内容被视为文本(xml特定字符,如&lt;,&amp;,&gt;等将被忽略并视为普通字符)。如果您用于显示文本的文本画布接受html,请阅读description标记的文本节点并将其分配给画布的innerHTML等效项。

答案 1 :(得分: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对象。

答案 2 :(得分:1)

我看到所有标签都是HTML。此外,还有一个CDATA定义其内容应被视为文本而不是XML。至于XML解析 - 很少有适用于iPhone的XML解析器:

  • TouchXML
  • 给XPathQuery

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