主题 : 关于静态html怎么解析
级别: 童生
UID: 20846
积分:45 加为好友
威望: 0 精华: 0
主题:4 回复:20
注册时间:2011-06-17
在线时长:0
1#   发表于:2011-06-21 17:27:24  IP:123.73.*.*
研究了半天,一直烦恼那个HTML怎么解析里面的标签  ,后来发现有一个htmlParser包 

测试一下,代码如下

package com.fm.action;    
   
import java.io.PrintWriter;    
   
import javax.servlet.http.HttpServletRequest;    
import javax.servlet.http.HttpServletResponse;    
   
import org.apache.struts2.ServletActionContext;    
import org.htmlparser.Node;    
import org.htmlparser.Parser;    
import org.htmlparser.util.NodeIterator;    
import org.htmlparser.util.NodeList;    
   
import com.opensymphony.xwork2.ActionSupport;    
   
   
   
   
public class UserAction extends ActionSupport {    
   
    public String login() throws Exception {    
            HttpServletRequest request=ServletActionContext.getRequest();//创建request    
            String path=request.getRealPath("/");//获取服务器路径    
            Parser parser=new Parser(path+"WEB-INF/Test.html");    
            StringBuffer result=new StringBuffer();    
            for(NodeIterator it=parser.elements();it.hasMoreNodes();)//迭代页面里所有东西    
            {    
                 Node node=it.nextNode();//没一个节点    
                if(node.getChildren()!=null)    
                {    
                    NodeList list=node.getChildren();//我这里${name}在BODY里,所以这里获取的是body的Node    
                    for(int i=0;i<list.size();i++)    
                    {    
                        Node n=list.elementAt(i);    
                        StringBuffer html=new StringBuffer(n.toHtml());    
                        if(n.toHtml().indexOf("$")>0)//找到$符号    
                        {    
                            int start=html.indexOf("$");    
                            int end=html.indexOf("}");    
                            String parm=html.substring(start+1, end);//中间的参数明${name}中的name    
                            html.replace(start,end+1,request.getParameter("name"));    
                            result.append(html);    
                        }    
                    }    
                }else   
                {    
                    result.append(node.toHtml());    
                }    
                    
            }    
            HttpServletResponse response=ServletActionContext.getResponse();    
            response.setContentType("text/html; charset=utf-8");    
            response.setCharacterEncoding("utf-8");    
            PrintWriter out= response.getWriter();    
            out.print(result);    
            out.flush();    
            out.close();    
            return null;    
    }    
        
        
}   
大概就是这样;jeecms具体的html怎么解析的,我也说不清楚,这只是我的猜想
1 共1页