3

我是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 标签。请帮帮我。谢谢

4

3 回答 3

2

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

于 2010-01-25T09:13:26.723 回答
2

正如之前在其他答案中所说,您的 xml 中的数据位于 CDATA 块内 - 这意味着当您获取标签的内容时,XML 解析器将无法为您摆脱“By:”位- 就它而言,这只是文字。

但是,如果您要将其显示为 UIWebView 中的 HTML(而不是 UILabel 等),您可以在字符串的开头添加一个样式表,以隐藏“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 是<description>xml 中标签的内容。

但是这种方法有点笨拙,我会非常努力地从您的服务器中获取一些更干净的 xml!

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

于 2010-01-25T09:27:14.087 回答
1

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

  • 触摸XML
  • XPath 查询

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

于 2010-01-25T09:10:13.410 回答