我可以使用NSXMLParser留下一些未解析的部分吗?

时间:2013-08-21 14:12:20

标签: ios xml nsxmlparser

我有一个XML文档,我想用NSXMLParser解析它。它可以包含的标签之一是<html>,并且在我的解析表示中,我希望逐字逐句地获取该标签的内容。但是,当我解析文档时,我的委托方法被调用html标记内每个标记的开头,结尾和内容。

我无法让文档提供者添加CDATA标记;我也不能使用NSXMLParser以外的东西来解析文档。

有没有办法告诉解析器将HTML标记的内容视为CDATA并保留未解析的内容,即使它们包含其他标记?

1 个答案:

答案 0 :(得分:1)

这太糟糕了,XML Feed的所有者无法修复它,因为根据HTML,您最终可能会得到格式错误的XML Feed。如果它确实是一个XML文档,它们肯定应该将它包装在CDATA中,或者将所有<替换为&lt;,将所有>替换为&gt;

坦率地说,如果你需要的只是HTML,而你所拥有的只是包含没有CDATA或适当字符替换的HTML的XML标记,我可能不会尝试通过{{1完全(因为成功的解析取决于所包含的HTML的性质)。我使用NSXMLParserNSScanner来提取包装HTML的XML开始和结束标记之间的所有文本。

或者,如果您真的想使用NSRegularExpression(因为除了您需要的HTML之外还有其他内容),请手动更改NSXMLParser,将HTML包装在{{1}中你自己。

另一方面,如果您尝试解析的文档确实不是XML,而只是HTML,那么当然,您不应该使用XML解析器对其进行解析。您应该使用HTML解析器,如HPPLE,如Galloway在Ray Wendlich网站上的文章How to Parse HTML on iOS中所述。