我有一個生成報告一個servlet,更具體報表的表身。這是一個黑匣子,我們無法訪問源代碼。
儘管如此,它的工作令人滿意,並沒有計劃在servlet被重寫或很快取代。
我們需要修改,以更新它生成其他報告,我想與會發現錨文本,並使用正則表達式替換它的過濾器做的幾個環節的響應文本。
研究:
我跑進this question有一個正則表達式過濾器。它應該是我需要的,但也可能不是。
我不是在parsing術語的嚴格意義上解析HTML,我不是用語言的全部規範工作。我擁有的是構成表體的HTML標籤的子集,並且沒有嵌套表格,所以由servlet生成的HTML子集不是遞歸的。
我只需要查找/替換錨的目標和屬性添加到標籤。
所以,問題是:
我需要修改一個servlet的輸出,以改變類型的所有鏈接:
<a href="http://mypage.com/servlets/reports/?a=report&id=MyReport&filters=abcdefg">
到像鏈接:
<a href="http://myOtherPage.com/webReports/report.xhtml?id=MyReport&filters=abcdefg" target="_parent">
我應該使用@ Jeremy Stein編寫的正則表達式過濾器還是有更好的解決方案?
我當然不會使用正則表達式來解析HTML,但也許這樣的東西可以用於URL本身。對於幽默和可怕的警告,你應該閱讀這個:http://stackoverflow.com/a/1732454/650425 –
@maple_shaft在這個問題上,我的肩膀上有很多人的聲音。至於servlet輸出,我們測試了它並寫入了有效的XML。如果我需要將它轉換爲數據結構,我會使用XML解析器解析它。在響應中發送之前,我只需修改它的部分。 – Mindwin
當你說:_「這種類型的鏈接...」_你是指指向特定主機或域的所有鏈接?或者只是那些具有特定網址?或者只有那些具有path ='servlets/reports /'的人你需要更清楚地明確你想修改哪些錨鏈接。另外,錨點是否還有其他屬性? – ridgerunner