【问题标题】:Is it possible to configure Eclipse to highlight Java syntax within XML?是否可以配置 Eclipse 以突出显示 XML 中的 Java 语法?
【发布时间】:2018-09-20 15:30:45
【问题描述】:

我正在为一种产品编程,该产品包含嵌入较大 XML 文件中的 Java(实际上是 BeanShell)代码的 sn-ps。这些是在运行时动态执行的。在整个文档的各个级别上可以有多个这些代码标记。

<larger-xml-file>
 <java>
  // java code that I want to syntax highlight
 </java>
 <more-xml...>
</larger-xml-file>

如果允许在特定 XML 标记中对代码进行基本语法高亮显示,那就太好了。例如,我知道 vi 可以使用 HTML 中的&lt;script&gt; 标签来做到这一点。它真的可以帮助我发现一些愚蠢的错误,比如缺少结束引号。

如果它可以允许完成或基本的语法检查,那就更好了。

有没有办法在 Eclipse 中轻松配置它?

【问题讨论】:

  • 考虑过拆分 xml 和 Java 吗?尽管 XML 不提供包含命令,但您可以使用预处理器来组合元素并创建最终的 XML。这样做的好处是您可以在 Eclipse 中运行单独的 Java 代码
  • 这是我们考虑过的选项之一。我们的最佳实践之一是将尽可能多的代码保留在与应用程序捆绑在一起的已编译 Java 类中,然后从 XML 中调用这些代码。结果是部署这些需要重新启动应用程序,因此在开发过程中,直接在 XML 中编辑它们通常更容易,可以热部署。
  • 我并不是要创建 jar 文件。创建一个 .java 文件,在 Eclipse 中运行它,直到它正常工作或至少没有语法/编译错误。然后运行您的“预处理器”,将include "foo.java 替换为源代码并创建一个新文件。热部署创建的 XML 并查看它是否有效。预处理器步骤可以使用 maven 或任何其他构建工具轻松完成,您甚至可以包括将应用程序文件复制到热部署的步骤
  • 很公平。我喜欢。我将把它保持打开状态,看看是否有一种巧妙的插件方式可以做到这一点,但这绝对是一个不错的选择。
  • 有 Eclipse 项目 TM4E 用于通过 TextMate 语法突出显示语法。您可以查看使用 TM4E 的 Eclipse aCute 项目,其中 HTML 语法引用了 JavaScript 语法。

标签: java eclipse syntax-highlighting


【解决方案1】:

这应该可以通过 Eclipse 项目 TM4E 通过 TextMate 语法 突出显示语法。

Eclipse Wild Web Developer 使用 Eclipse TM4E 展示了嵌入/包含/注入语法如何在 HTML 中为 JavaScript 工作:

<extension point="org.eclipse.core.contenttype.contentTypes">
   <content-type
      base-type="org.eclipse.core.runtime.text"
      file-extensions="html"
      id="contentType.html"
      name="HTML"
      priority="low"/>
</extension>
<extension point="org.eclipse.ui.genericeditor.presentationReconcilers">
   <presentationReconciler
      class="org.eclipse.tm4e.ui.text.TMPresentationReconciler"
      contentType="contentType.html"/>
</extension>
<extension point="org.eclipse.ui.editors">
   <editor
      name="HTML Editor"
      icon="icons/html_editor_icon.png"
      class="org.eclipse.ui.internal.genericeditor.ExtensionBasedTextEditor"
      contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
      id="language-editor.html"
      default="true"
      extensions="html">
   <contentTypeBinding
      contentTypeId="contentType.html"/>
   </editor>
</extension>

【讨论】:

  • 这看起来很有希望。如果可行,我会试一试,然后回来接受答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-25
相关资源
最近更新 更多