2012-10-30 72 views
3

我一直在使用Jsoup來解析我的HTML文件,到目前爲止它做得很好。但是,它無法解析任何服務器標記(<%...%>)。我決定把它擴大,但我無法找到一個簡單的方法來擴大其Parser和所有那些私人/包級類(即TreeBuilder作爲,TransitionState ...等)...JAVA的JSP和HTML解析器

於是我開始尋找Jericho,因爲它聲稱它可以解析服務器標籤 - 但是,它的文檔很差,我甚至無法輕鬆入門。看起來它的API不如Jsoup提供的那麼友好 - 並不是直接提取一些節點並將其移動...

我不知道以前是否有類似的情況,以及如何解決它?總之,我只想解析Java中的JSP文件。 (好吧,請不要讓我自己實現一個; p)

+0

你只需要訪問jsp標籤和腳本或者解析的html?對於實際的jsp解析器來說,html代碼只是沒有任何解釋的文本。 –

+0

實際上我想要的是1)讀取JSP文件,2)修改HTML內容,3)將它寫入一個新的JSP文件(應保留JSP scriptlet和標籤)。然而Jsoup不能那樣做.. –

回答

1

最後我得到一個解決方法:將服務器代碼塊放在HTML註釋塊中,以便1)服務器代碼可以正確執行; 2)Jsoup可以將整個塊作爲HTML註釋節點進行處理,而不需要觸摸任何內容。

例如

<!-- 
<%@ page language="java" errorPage="/error.jsp" pageEncoding="UTF-8" contentType="text/html;charset=UTF-8" %> 
<%@ page import="com.systemcrossed.groupbuystart.webapp.display.DisplayHelper" %> 
<%@ page import="com.systemcrossed.groupbuystart.webapp.util.JsonUtil" %> 
<%@ page import="org.apache.commons.lang.StringEscapeUtils" %> 
<%@ include file="/_sys/pages/public/incl/jspCommon.jsp" %> 
--> 
<!--<% 
    // Java code here 
%>--> 
<html> 
<head> 
    ... html stuff 

現在對我來說效果很好!希望有同樣問題的人可以得到一些幫助! ;)