nekohtml+xpath实例,及注意事项
生活随笔
收集整理的這篇文章主要介紹了
nekohtml+xpath实例,及注意事项
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最近做項目用到了nekohtml+xpath
nekohtml將HTML文檔解析為標(biāo)準(zhǔn)的DOM,再用XPath從DOM中抽取想要的結(jié)點。
nekohtml比起htmlparser還真是簡單,但是簡單就意味著不透明,出了錯就不知是什么引起的,這一點真讓人受不了。
下面先說說nekohtml+xpath的使用注意事項:
1.nekohtml會自動將html的標(biāo)簽轉(zhuǎn)化為大寫,因此寫XPath時要用大寫
//div 錯誤
//DIV 正確
2.用XPath處理時標(biāo)簽前要加命名空間,否則找不到結(jié)點,這里就要用到NamespaceContext這個類
?
class MyNamespaceContext implements NamespaceContext {private String ns;public MyNamespaceContext(String ns) {this.ns = ns;}public String getNamespaceURI(String prefix) {// TODO Auto-generated method stubif (prefix == null) {throw new NullPointerException("Null prefix");} else if (prefix.equals("pre")) {return this.ns;} else if (prefix.equals("xml")) {return XMLConstants.XML_NS_URI;}return XMLConstants.XML_NS_URI;}@Overridepublic String getPrefix(String namespaceURI) {// TODO Auto-generated method stubreturn null;}@Overridepublic Iterator getPrefixes(String namespaceURI) {// TODO Auto-generated method stubreturn null;} }?
實例化XPath,并設(shè)置命名空間
?
XPathFactory factory = XPathFactory.newInstance();XPath xpath = factory.newXPath();xpath.setNamespaceContext(new MyNamespaceContext("http://www.w3.org/1999/xhtml"));XPathExpression expr = xpath.compile("//pre:TITLE"); ??
?
最后推介一個firefox的XPath插件--XPath checker
附近上源文件
?
總結(jié)
以上是生活随笔為你收集整理的nekohtml+xpath实例,及注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [html] IE6文字溢出BUG(别
- 下一篇: 前端学习(2924):watch的用法