我正在使用 NSXMLParser 从网站解析 HTML。测试站点在我的控制之下,但在操作站点不会。
问题是当解析器遇到包含“坏”字符的 javascript 时。例如,包含if(screen.width<=521)
. 问题是代码中的 <。我可以看到问题,但不确定是否有任何好的解决方法。(NSXMLParser 报告 NSXMLParserErrorDomain 错误 68。我明白了原因 - 它将 <= 视为新标签的开始,但 = 不是有效的标签名称字符......)。但是那我该怎么办 eg if(var<20)
?
我实际上对特定内容不感兴趣,因此可以执行全局替换/删除例如“<=”和“>=”(等)之类的操作,但在某些方面这似乎有点混乱,因为我使用 NSXMLParser 来避免不得不开始弄乱内容。如果替换是最好的前进方式,我可以设想“<=”和“>=”,但我应该包括任何其他序列吗?
我是 Cocoa 的新手,所以很容易错过了一些明显的东西——在这种情况下,我很抱歉。我确实看到其他人也发现了类似的问题,但无法从这些问题中找到一个好的方法。
我正在处理错误(以整洁的方式),但它阻止了我的应用程序做它应该做的事情 - 即我需要避免错误而不是处理它。
背景:该应用程序正在对 html 进行“之前”和“之后”比较并寻找更改。我可以将“<=”换成非常奇怪的东西,然后在必要时将其换回去。我什至可以先检查替换内容的数据以消除可能的歧义(例如,找到下载页面中没有的 UID 序列,将“<=”替换为 UID 序列,解析页面,如果需要,将 UID 替换为“<=” ,同样适用于“>=”。
(我查看了例如 libxml2 的 libtidy,但找不到简单的文档,并且如果它不能解决问题,我对启动这样的路线持谨慎态度。)