Java 如何使用Eclipse插件修改HTML源代码?
我想编写一个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(以
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
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
问题是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();
}
}