我有一大堆源程序文件需要修改,每个文件改动的地方都一样,都是对某个字符串进行修改。想写一个程序完成这个简单的功能,刚好时间很紧,就在这里问一个。谢谢。修改所有*.jsp文件及*.js文件1、在所有*.jsp中把以下代码把
<OBJECT ID="eMSWord" width="0" height="0"
CLASSID="CLSID:45FA68F2-834F-4ACD-A244-AA05DA500D2C"
CODEBASE="../activex/eWorksControls.CAB">
</OBJECT>
替换为
<OBJECT ID="eWorksControl"
CLASSID="CLSID:70859A2B-7B43-405C-8108-75CFCD0F32E8"
CODEBASE="activex/eWorksControl.ocx">
</OBJECT>2、在所有*.jsp中修改或增加以下代码 如果原文件有以下代码 eMSWord.sessionID = "<%=request.getRequestedSessionId()%>";
eMSWord.contextPath = location.protocol + "//" + location.host + "<%=request.getContextPath()%>";
eMSWord.userName = "<%=jspCurrentUser.getName()%>"; 则把eMSWord改成eWorksControl。
否则增加以下代码
<script language="JavaScript">
eWorksControl.SessionID = "<%=request.getRequestedSessionId()%>";
eWorksControl.ContextPath = location.protocol + "//" + location.host + "<%=request.getContextPath()%>";
eWorksControl.UserName = "<%=jspCurrentUser.getName()%>";
</scrtip>之间 位置放在更新后的 <OBJECT ID="eWorksControl"
CLASSID="CLSID:70859A2B-7B43-405C-8108-75CFCD0F32E8"
CODEBASE="activex/eWorksControl.ocx">
</OBJECT>
<OBJECT ID="eMSWord" width="0" height="0"
CLASSID="CLSID:45FA68F2-834F-4ACD-A244-AA05DA500D2C"
CODEBASE="../activex/eWorksControls.CAB">
</OBJECT>
替换为
<OBJECT ID="eWorksControl"
CLASSID="CLSID:70859A2B-7B43-405C-8108-75CFCD0F32E8"
CODEBASE="activex/eWorksControl.ocx">
</OBJECT>2、在所有*.jsp中修改或增加以下代码 如果原文件有以下代码 eMSWord.sessionID = "<%=request.getRequestedSessionId()%>";
eMSWord.contextPath = location.protocol + "//" + location.host + "<%=request.getContextPath()%>";
eMSWord.userName = "<%=jspCurrentUser.getName()%>"; 则把eMSWord改成eWorksControl。
否则增加以下代码
<script language="JavaScript">
eWorksControl.SessionID = "<%=request.getRequestedSessionId()%>";
eWorksControl.ContextPath = location.protocol + "//" + location.host + "<%=request.getContextPath()%>";
eWorksControl.UserName = "<%=jspCurrentUser.getName()%>";
</scrtip>之间 位置放在更新后的 <OBJECT ID="eWorksControl"
CLASSID="CLSID:70859A2B-7B43-405C-8108-75CFCD0F32E8"
CODEBASE="activex/eWorksControl.ocx">
</OBJECT>
CLASSID="CLSID:45FA68F2-834F-4ACD-A244-AA05DA500D2C"
CODEBASE="../activex/eWorksControls.CAB">
</OBJECT>
截止到</OBJECT>
替换为:ID="eWorksControl"
CLASSID="CLSID:70859A2B-7B43-405C-8108-75CFCD0F32E8"
CODEBASE="activex/eWorksControl.ocx">
</OBJECT>
其他雷同..
然后 XPath 查找 所有 Object 节点,如果属性是你要的就替换.
SAX 解析器能扫描标签,不过要自己动手写 , 碰到你感兴趣的标签就入栈,
如果找到对应结束标签就退栈 , 像像 Digester 一样, 你也可以为 Digester 添加这么一个 Rule.
或者直接用Digester , 不过直接用不知道会不会有像 <% 这样的东西匹配问题 (它不像个标签)?Eclipse JDT 插件 ( DOM ) 就是个经典的样例, 不过我看不懂, 太大了,
它把所有的东西都当成对象, 语句也是 Statement 它包含 所有信息 , 这样就能对比是不是你要找的语句, 而不用担心多了空格,少了回车之类 的问题.