在wap解析器中,大量用到了session,为了解决有些手机不支持cookie的问题,使用java的Url重写方法response.encodeURL();
由于我的wml或xhtml页面是动态通过xml+xslt解析生成的。。。所以我在最后解析的方法里加上response.encodeURL
关键代码如下
//replace form @action
List list = objXmlOutput.selectNodes("//*[name()='form']/@action");
for (Iterator iter = list.iterator(); iter.hasNext();) {
Attribute attribute = (Attribute) iter.next();
attribute.setValue(response.encodeURL(attribute.getValue()));
}
//replace a @href
list = objXmlOutput.selectNodes("//*[name()='a']/@href");
for (Iterator iter = list.iterator(); iter.hasNext();) {
Attribute attribute = (Attribute) iter.next();
attribute.setValue(response.encodeURL(attribute.getValue()));
}
//replace option @onpick
list = objXmlOutput.selectNodes("//*[name()='option']/@onpick");
for (Iterator iter = list.iterator(); iter.hasNext();) {
Attribute attribute = (Attribute) iter.next();
attribute.setValue(response.encodeURL(attribute.getValue()));
}
埃。。。用xpath这么久了,才发现 //a/@href 和 //*[name()='a']/@href 是有差别的 ,估计前者是只取第一个节点,后则匹配所有节点,不解 ,……
开始有点讨厌Linux