nekohtml+xpath实例,及注意事项
最近做项目用到了nekohtml+xpath
nekohtml将HTML文档解析为标准的DOM,再用XPath从DOM中抽取想要的结点。
nekohtml比起htmlparser还真是简单,但是简单就意味着不透明,出了错就不知是什么引起的,这一点真让人受不了。
下面先说说nekohtml+xpath的使用注意事项:
1.nekohtml会自动将html的标签转化为大写,因此写XPath时要用大写
//div 错误
//DIV 正确
2.用XPath处理时标签前要加命名空间,否则找不到结点,这里就要用到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,并设置命名空间
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
附近上源文件
nekohtml+xpath实例,及注意事项相关推荐
- html 修改下划线粗细,TextView设置内容下划线加粗等html样式实例及注意事项
TextView设置内容下划线加粗等html样式实例及注意事项 效果图 test01.png Java代码 package com.myapplication; import android.app. ...
- C语言strtok函数使用实例以及注意事项
C语言strtok函数使用 使用场景 代码实例 注意事项 参考 使用场景 字符串内容中被某个或者某些字符分割成若干部分,需要取出被分隔的若干个子字符串又不想去确定特殊字符的个数. 比如将下列字符串21 ...
- XPath实例教程十四、following-sibling轴
following-sibling轴(axis)包含上下文节点之后的所有兄弟节点 /AAA/BBB/following-sibling::* <AAA> &l ...
- XPath实例教程四、[]的作用
方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素. /AAA/BBB[1] 选择AAA的第一个BBB子元素 &l ...
- XPath实例教程十六、following轴
following轴(axis)包含同一文档中按文档顺序位于上下文节点之后的所有节点, 除了祖先节点,属性节点和命名空间节点 /AAA/XXX/following::* <AAA> ...
- XPath语法规则及实例
XPath语法规则及实例 XPath语法规则 一.XPath术语: 1.节点:在XPath中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点. XML文档是被作为节点树 ...
- flowable学习笔记(四):动态多实例
1.定义流程模板 [测试用户任务多实例]任务节点配置了以下属性: 集合(多实例):userList.这个创建流程实例时入参需要加上这个参数. 元素变量(多实例):user.工作流创建多实例时会将集合( ...
- Python:XPath与lxml类库
什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...
- CCNP实验:路由重分布注意事项
CCNP实验:路由重分布注意事项之一.重分布基础: 大家都知道,一般来说一个组织或者一个跨国公司很少只使用一个路由协议,而如果一个公司同时运行了多个路由协议,或者一个公司和另外一个公司合并的时候两个公 ...
- python xpath语法-Python爬虫之XPath语法和lxml库的用法
本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 安装 为什么要用这个库 ...
最新文章
- ssh_config sshd_config 详解
- 深度学习会不会被取代?深度学习必看发展史
- java ppt转html_word,ppt,excel转pdf,pdf转html工具类搭建
- java编程编一个小系统_如何编写一个java学生信息管理系统?
- CVE-2020-16875: Microsoft Exchange远程代码执行漏洞通告
- MyEclipse10 离线图文安装SVN插件教程
- python打开文件夹中的tiff_浅谈python下tiff图像的读取和保存方法
- OPPO A11解账号锁刷机包
- 西安邮电大学计算机学院教师,西安邮电大学计算机学院
- 【转】LaTeX 符号命令大全
- photoshop涂抹工具
- 论游戏程序员的自我修养(MiloYip)
- elementUI输入框只能输入数字解决方案
- android需要电脑输入吗,Android 远程输入法,用电脑给手机输入文字
- 用android实现GB28181监控客户端app
- 解决定时器导致页面卡顿、卡死的问题
- 一阶常微分方程的数值解法(二阶显式、隐式 Adams 公式及 Milne 方法)
- python程序设计基础刘艳网课_智慧职教APPPython程序设计基础(九江职业技术学院)题目答案...
- Keil MDK “Ivalid Rom Table”,“Device could not be powered up”的解决办法
- 美国计算机科学专业学校排名,美国计算机科学专业排名