dom4j学习笔记

      最近在做Wap网站的项目,期间需要解析并更改xhtml文档,但在使用Node接口的selectNodes(String arg)时,发现当xml文档中包含默认命名空间时,查询回来的List的大小竟然是0.

      经过一番查证,发现原来是Node接口的实现中没有对命名空间的限制和更改,因为实质上Dom4j中Node的selectNodes(String arg)方法使用的依然是XPath的瑟selectNodes(String arg)方法,但在XPath类中就有对命名空间的限制和更改,所以这里不能简单的直接使用Node接口的selectNodes(String arg)方法。

 

下边这个是我自己定义的selectNodes方法:

public List selectNodes(Document doc, String arg) {
    Namespace ns = doc.getRootElement().getNamespace();
    Map map = new HashMap();
    map.put("xhtml", ns.getURI());

    XPath xPath = doc.createXPath("//xhtml:" + arg.substring(2));
    xPath.setNamespaceURIs(map);
    return xPath.selectNodes(doc);

}

你可能感兴趣的:(xml,XHTML,WAP)