Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Eclipse插件修改HTML源代码?_Java_Html_Eclipse_Eclipse Plugin - Fatal编程技术网

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

Java 如何使用Eclipse插件修改HTML源代码?,java,html,eclipse,eclipse-plugin,Java,Html,Eclipse,Eclipse Plugin,我想编写一个Eclipse插件来修改HTML源文件,例如根据特定情况查找并更改href或src。我对Eclipse还相当陌生,但我到处寻找可以实现这一点的东西,却找不到类似的东西,我能找到的唯一API就是修改Java代码 是否有任何API或开源Eclipse插件可供我修改以实现此目的?在提问之前,您似乎没有对搜索进行尽职调查 eclipse中已经有一个名为的html插件 是与您相同的上一个堆栈溢出问题。如果您正在编写Eclipse插件,您可以使用Web工具平台(WTP)HTML插件中的API(以

我想编写一个Eclipse插件来修改HTML源文件,例如根据特定情况查找并更改
href
src
。我对Eclipse还相当陌生,但我到处寻找可以实现这一点的东西,却找不到类似的东西,我能找到的唯一API就是修改Java代码


是否有任何API或开源Eclipse插件可供我修改以实现此目的?

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

eclipse中已经有一个名为的html插件


是与您相同的上一个堆栈溢出问题。

如果您正在编写Eclipse插件,您可以使用Web工具平台(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编辑器(以及WTP提供的大多数编辑器,除了JavaScript工具)下运行的相同模型

import org.eclipse.wst.sse.core.internal.temporative.IModelManager;
导入org.eclipse.wst.sse.core.internal.temporative.IStructuredModel;
导入org.eclipse.wst.xml.core.internal.temporative.document.IDOMDocument;
导入org.eclipse.wst.xml.core.internal.temporative.document.IDOMModel;
导入org.eclipse.jface.text.IDocument;
导入org.w3c.dom.Element;
...
IModelManager modelManager=StructuredModelManager.getModelManager();
IDOMModel模型=null;
试一试{
model=(IDOMModel)modelManager.getModelForEdit(anIFile);
//类似W3C的DOM操作
IDOMDocument doc=model.getDocument();
Element ele=doc.createElement(HTML40Namespace.ElementName.P);
附加儿童文件(ele);
//JFace i文档兼容性
IDocument textDocument=model.getStructuredDocument();
替换(0,textDocument.getLength(),“一些文本”);
Element ele2=doc.createElement(HTML40Namespace.ElementName.P);
附加儿童文件(ele2);
/*您可以在这里使用其中一种或两种机制来做更多的工作
*变化立即反映在文本中,反之亦然,
*如果源代码本身是
*“破碎的”。
*/
}
最后{
如果(型号!=null){
model.save();
model.releaseFromEdit();
}
}
  • 加载后,您可以使用Eclipse的JFace文档API或非常接近W3CDOMAPI的东西修改文件内容。我们的模型可以作为文本文档进行完全修改,而一些W3CAPI的构建并没有考虑到这一点。我们也有一些历史性的实现错误,例如XML声明在XML DOM中具有错误的节点类型
  • 一些必需的类仍然在
    内部
    临时
    包中,以实现旧式二进制兼容性。更改它们将破坏未知数量的下游插件
  • Neon处理AngularJS样式的属性名称比以前的版本要多,如果这很重要的话
  • CSS和JavaScript部分和属性值应该自动处理,并且不受影响
  • 如果在启动eclipse时将
    org.eclipse.wst.sse.ui/actioncontributor/debugstatusfields=true
    (这是一个跟踪选项)放入一个文件,并将该文件用作
    -debug
    的参数值,则受支持的文件类型在状态栏中将有一个额外字段,在打开的编辑器中显示选定的文本偏移量。双击它会打开一些关于选择的书呆子信息。你甚至可以为你的实际安装设置它;除了显示的数字外,唯一的性能影响是双击该位置。
从Eclipse启动以测试插件时,您只需从启动配置对话框进行设置:


问题是OT,但海报要求的是可编程的东西,而不仅仅是手动编辑器上的语法突出显示。啊,我很抱歉。看来我也没有尽职尽责!
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();
    }
}