如何使用Eclipse插件修改HTML源代码?

时间:2016-07-11 17:09:08

标签: java html eclipse eclipse-plugin

我想编写一个Eclipse插件来修改HTML源文件,例如。根据特定情况查找并更改hrefsrc。我对Eclipse很新,但是我搜索了一些可以实现此目的并且无法找到任何类型的东西,我能找到的唯一API就是修改Java代码。

是否有任何API或者我可以修改的开源Eclipse插件来完成此任务?

2 个答案:

答案 0 :(得分:2)

如果您正在编写Eclipse插件,则可以使用Web Tools Platform(WTP)HTML插件中的API(下面的警告)。无头插件需要:

  • org.eclipse.wst.html.core
  • org.eclipse.wst.xml.core
  • org.eclipse.wst.sse.core
  • org.eclipse.text
  • org.eclipse.core.resources

要承担很多依赖,但这些是在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();
    }
}
  • 加载后,您可以使用Eclipse的JFace Document API或非常接近W3C DOM API的内容修改文件内容。我们的模型可以完全修改为文本文档,而一些W3C API并没有考虑到这些。我们还有一些历史性的实施错误,例如: XML声明在XML DOM中具有错误的节点类型。
  • 一些必需的类仍然在internalprovisional个包中,以实现旧版二进制兼容性。更改它们会破坏未知数量的下游插件。
  • Neon处理AngularJS样式的属性名称better,而不是之前的版本,如果这很重要的话。
  • CSS和JavaScript部分及属性值应自动处理并且不受影响。
  • 如果将org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields=true(它是跟踪选项)放入文件并在启动Eclipse时将该文件用作-debug的参数值,则支持的文件类型在状态栏中将有一个额外的字段在打开的编辑器中显示选定的文本偏移量。双击它将打开一些有关该选择的书呆子信息。您甚至可以为实际安装进行设置;除了显示的数字外,唯一的性能影响是双击那里。 status field

从Eclipse启动以测试插件时,您只需从启动配置对话框中进行设置:

Tracing tab in the Launch Config dialog

答案 1 :(得分:-1)

在提问之前,您似乎没有对搜索进行尽职调查。

在eclipse中已经有一个名为HTML Editor的html插件。

This link是先前的堆栈溢出问题,与您的问题相同。