75年生人,程序员,在西安。

dom4j中Node和Element的概念要理解清楚

使用dom4j解析处理html时,遇到一些麻烦的问题:


基中必须要使用XPath取得节点,有个命名空间的问题,需要如下处理:

HashMap<String, String> gm = new HashMap<String, String>();

gm.put("xmlns", "https://www.w3.org/1999/xhtml");

Document rootDoc = DocumentHelper.parseText(s);

XPath xpathTable = DocumentHelper

.createXPath("//xmlns:table[@class=\"tableList\"]");

xpathTable.setNamespaceURIs(gm);

List<Node> tables = xpathTable.selectNodes(rootDoc);


现在取出来是Node对象(比如一个table),再往下取时,再用node1.selectNodes会取不到东西,可能还是因为命名空间的麻烦问题,所以最好转为Element,就很容易了,element1.elements("tr"),就可以方便地循环了,比较奇怪的是转换为Element的方法居然是强转-_-!

Element table1 = (Element) tables.get(0); // 第一个表格

由此可以这样理解Node和Element,Node是节点,一个属性、一段文字、一个注释等都是节点,而Element是元素,是比较完整的一个xml的元素,即我们口头上说的xml“结点”(此处故意使用“结”字,以示与“节点”Node区别),呵呵……

评论

© 世风十三 | Powered by LOFTER