我想编写一个Eclipse插件来修改HTML源文件,例如。根据特定情况查找并更改href
或src
。我对Eclipse很新,但是我搜索了一些可以实现此目的并且无法找到任何类型的东西,我能找到的唯一API就是修改Java代码。
是否有任何API或者我可以修改的开源Eclipse插件来完成此任务?
答案 0 :(得分:2)
如果您正在编写Eclipse插件,则可以使用Web Tools Platform(WTP)HTML插件中的API(下面的警告)。无头插件需要:
要承担很多依赖,但这些是在WTP的HTML编辑器下运行的相同模型(除了JavaScript工具之外,还有WTP提供的大多数编辑器)。
import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMDocument;
import org.eclipse.wst.xml.core.internal.provisional.document.IDOMModel;
import org.eclipse.jface.text.IDocument;
import org.w3c.dom.Element;
...
IModelManager modelManager = StructuredModelManager.getModelManager();
IDOMModel model = null;
try {
model = (IDOMModel) modelManager.getModelForEdit(anIFile);
// W3C-like DOM manipulation
IDOMDocument doc = model.getDocument();
Element ele = doc.createElement(HTML40Namespace.ElementName.P);
doc.appendChild(ele);
// JFace IDocument compatibility
IDocument textDocument = model.getStructuredDocument();
textDocument .replace(0, textDocument .getLength(), "<tag>some text</tag>");
Element ele2 = doc.createElement(HTML40Namespace.ElementName.P);
doc.appendChild(ele2);
/* You can do more with either, or both, mechanisms here. DOM
* changes are reflected in the text immediately and vice versa,
* with a best effort by the DOM side if the source itself is
* "broken".
*/
}
finally {
if (model != null) {
model.save();
model.releaseFromEdit();
}
}
internal
或provisional
个包中,以实现旧版二进制兼容性。更改它们会破坏未知数量的下游插件。org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields=true
(它是跟踪选项)放入文件并在启动Eclipse时将该文件用作-debug
的参数值,则支持的文件类型在状态栏中将有一个额外的字段在打开的编辑器中显示选定的文本偏移量。双击它将打开一些有关该选择的书呆子信息。您甚至可以为实际安装进行设置;除了显示的数字外,唯一的性能影响是双击那里。
从Eclipse启动以测试插件时,您只需从启动配置对话框中进行设置:
答案 1 :(得分:-1)