有哪些技术可用于在iOS应用程序中以编程方式转换HTML / DOM?

时间:2013-07-12 06:19:37

标签: html ios dom transformation

我正在处理各种RSS Feed,其中包含摘要以及目标网页网址内容,并尝试使用统一转换方法。

XSLT是我尝试的第一件事,因为它可以以标准的方式实现我想要的,除了添加新的XSLT样式表以适应独特格式的站点和提供内容之外没有太多的麻烦。

问题:iOS中的XSLT库被视为“私有”,即使静态链接到您自己的副本也会被Apple Store分析工具拒绝。

我已经研究过将样式表和数据注入未显示的UIWebView的可能性,但这似乎是以“批准”的方式获得系统底层XSLT处理器的一种非常迂回和黑客的方式。

存在哪些替代技术/库可以让我以标准方式执行此操作,即:无需自行编辑。

3 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的要求,但有一种可能性是使用libxml(在iOS中允许)来解析XML,并在必要时操纵DOM。如果你真的需要进行XML转换,这将比XSLT更加努力,但是如果你只需要从XML中提取数据,那么使用xpath查询就可以很容易地完成。

也就是说,我已经读过几个人声称他们在iOS上使用XSLT并在应用程序商店中批准了他们的应用程序。特别是,我看到this stackoverflow answer声称是多人的工作解决方案。如果失败,another answer建议使用重命名的符号自行构建libxslt库以绕过应用商店检查。我只是建议作为最后的手段。

答案 1 :(得分:0)

你可能想要看看Hpple有什么强大但重量轻/原生的东西。请参阅此处的入门教程:http://www.raywenderlich.com/14172/how-to-parse-html-on-ios。祝你好运!

答案 2 :(得分:0)

我也会推荐TFHpple,但我也会详细说明解决方案。我已经探索了一个应用程序导航第三方(好吧,我是第三方,他们是源,但这是语义)网站/数据源,但有一些陷阱。最大的缺陷是显而易见的:如果数据源DOM发生变化,您需要更改应用并重新发布。一种创造性的方法是在公共服务器上发布/公开DOM的全局副本,这样终端用户无需在数据源发生变化时更新其应用程序(只要更改不是激进的) )。

例如,如果您在TFHpple中预期的DOM搜索是@"//figure[@class='figure']/a",那么从现在起一周后,您正在寻找的数据源资源被更改为@"//figure1[@class='figure1']/a"您刚刚开启自己的App Store发布...除非...您在您在应用程序可以使用的数据字典中控制的Web服务器上发布预期的DOM搜索,并将其提供给应用程序中的各种DOM搜索元素。我在这里预见的唯一问题是,如果数据源添加或删除您要使用的数据元素,则必须提前释放构建或处理删除(分别)。

最后,如果数据源DOM没有很好地形成或一致,那么你可能会多次撞到墙上。