我是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标签。请帮帮我。谢谢
答案 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解析器:
我更喜欢后者。 我不确定解析器将如何处理CDATA。 也许你必须解析两次 - 第一次获取CDATA内容,第二次解析内容......