【问题标题】:Ignore CDATA while xml parsingxml解析时忽略CDATA
【发布时间】:2011-01-09 02:36:57
【问题描述】:

我是 iphone 开发的新手。我想在解析时忽略 CDATA 标记,因为它将其后面的 HTML 标记视为文本。由于我想单独显示内容,我希望我的解析器忽略 CDATA 标记。我的源代码是

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

有什么方法可以忽略 CDATA 标签? 有什么办法可以两次解析我的源代码,使其只显示内容?

请给我一些示例代码。请帮助我。谢谢。

【问题讨论】:

标签: iphone html cdata


【解决方案1】:

如果您将 CDATA 内容视为 XML 而不是 CDATA,那么您的解析器将抛出错误(因为您的 HTML 是 XHTML 和 HTML 的奇怪混合,并且格式不正确)。

如果要获取 HTML,则解析 XML,提取节点的文本内容,然后将该文本解析为 HTML。

【讨论】:

  • 如何用html解析文本,请给出一些示例代码
【解决方案2】:

没有办法忽略 CDATA 标记 - 它是 xml 规范的一部分,解析器应该尊重它。

如果您不喜欢this answer to your earlier question 的想法,您可以获取CDATA 部分的内容并再次将其解析为XML。但是,强烈不建议这样做!您不知道 CDATA 的内容将是有效的 xml(它们可能不是)。

如果您可以 100% 保证 CDATA 部分包含您上面的表格,您可能会使用一些字符串操作来获取数据(即string replace '&lt;span class="by"&gt;By: &lt;/span&gt;' with '')但同样,如果 CDATA 内容这几乎肯定会中断改变。

xml 是从哪里来的?与服务所有者交谈并让他们发送给您而不是描述类似

的内容是一个更好的主意
<description>
  <author>By Sydney Ember</autho>
  <text>In the week since an </text>
</description>

S

【讨论】:

  • 即使我能理解源代码中的缺陷。但是所有人都只期望输出而不理解具有 CDATA 的源代码中的问题。
猜你喜欢
  • 2023-03-22
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-09
  • 2021-12-15
相关资源
最近更新 更多