使用NSXMLParser来parsingHTML
我正在开发一个应用程序,它汇总了一些来自互联网的信息并重新格式化内容。 所以我正在寻找一种方法来parsing一些HTML。 鉴于XML和HTML是非常相似的结构,我想“也许我应该只使用NSXMLParser”我已经使用它来parsing我的RSS源,我已经习惯了使用它,但我遇到了一个问题。
parsing器不会将<p>
识别为一个元素。 提取<title>
或<img>
等元素没有问题,但不像<p>
。 有没有人试过这样做,如果是的话,你有任何build议或解决这个问题? 我认为XMLParser对我所做的工作很有帮助,我想用它,但显然,如果我无法获取<p>
元素中的文本,那对我来说是完全没用的。
任何build议都是受欢迎的,即使是完全不同的方法。 我已经看过一些第三方库做这个,但是从我读的东西都有一些错误,我更喜欢使用苹果提供的东西。
“p”作为元素的名字没有什么特别之处。 虽然很难确定,因为您没有提供您要parsing的HTML示例,但问题很可能是由不是格式良好的XML的HTML引起的。 换句话说,使用NSXMLParser可以使用XHTML,但不一定是普通的HTML。
“p”元素经常在HTML中find,没有匹配的结束标签,这是不合法的XML。 我的猜测是,在尝试使用NSXMLParserparsing它之前,必须将HTML转换为XHTML
HTML不一定是格式良好的XML,当您将其parsing为XML时,这就很麻烦。
以下面的例子:
<body> <p>123 <p>abc <p>789 </body>
如果您在浏览器中查看这个HTML块,它将显示您所期望的。 但是,如果你把这个parsing成xml,会有麻烦,因为这些p标签没有closures。
我build议您使用我的DTHTMLParser,它是在NSXMLParser之后build模的,并使用libxml2来完美地parsingHTML。 你通常不能依赖于HTML格式良好,可以parsing为XML。
libxml2有一个HTML模式,它可以忽略诸如未closures的标签和任何HTML可能在ideosyncrasies中的东西。
HTMLparsing说明:
- http://www.cocoanetics.com/2011/09/taming-html-parsing-with-libxml-1/
- http://www.cocoanetics.com/2012/01/taming-html-parsing-with-libxml-2/
DTHTMLParser文档:
来源,DTFoundation的一部分:
- DTHTMLParser.h
- DTHTMLParser.m
- 在Cocos2d中,多层次的button,我怎样控制哪个button对用户的触摸做出反应?
- 正确的序列获取注册令牌在iOS上的GCM推送通知? GCM不可靠吗?
- 在deviseUIA外观时如何针对特定的UIView?
- 有关于cocoa触摸自动UItesting的很好的教程吗?
- 检测下一个将触发的UILocalNotification
- 推送通知:didFailToRegister和didRegister委托没有调用
- MFMessageComposeViewController显示空白/白色屏幕
- initWithNibName没有被调用
- 将UIKeyboardFrameEndUserInfoKey转换为视图或窗口坐标