在 IntelliJ IDEA 中重新格式化混合内容 XML

Posted

技术标签:

【中文标题】在 IntelliJ IDEA 中重新格式化混合内容 XML【英文标题】:Reformatting mixed content XML in IntelliJ IDEA 【发布时间】:2014-02-02 20:43:01 【问题描述】:

我想阻止 IDEA 在某些元素周围插入换行符,类似于 html 格式,其中某些元素(如 <b>)保持内联。

我有一个带有声明混合内容的 DTD 的 XML 方言。

DTD:

<!ELEMENT mixed (#PCDATA|inline)*>
<!ELEMENT inline #PCDATA>

XML 文件:

<mixed>
  Some text with <inline>inline elements</inline>
  and a line break.
</mixed>

当我重新格式化 XML 文件时,IDEA 将其转换为

<mixed>
  Some text with 
  <inline>inline elements</inline>
  and a line break.
</mixed>

我查看了 Code style->XML->Other 上的所有选项。 “保留空白”选项限制性太强,因为我希望 IDEA 打破长行。

【问题讨论】:

【参考方案1】:

在 IDEA 13 中,您可以使用新的 Formatter Control 功能来禁用所选代码行的自动格式化。 要启用此功能,您应该在项目设置中标记以下复选框:

然后在 cmets 中插入选定的标记来划分不应由 重新格式化代码 工具格式化的代码片段,例如:

<root>
    <!-- @formatter:off -->
    <mixed>
        Some text with <inline>inline elements</inline>
        and a line break.
    </mixed>
    <!-- @formatter:on -->

    <mixed>
        Some text with
        <inline>inline elements</inline>
        and a line break.
    </mixed>
</root>

不幸的是,以前版本的 IDEA 中没有这样的功能,在这种情况下,我唯一知道的选择是手动格式化代码,而不是使用 重新格式化代码 工具。

【讨论】:

这很有趣,我不知道。但是,我需要将类似的东西写入 DTD,以便重新格式化后,通常会单独保留选定的元素,如“内联”元素。我不知道是否存在类似的东西,但 IDEA 可以为 HTML 中的内联元素做到这一点,而且这似乎是用 Relax-ng 模式定义的。【参考方案2】:

在尝试了很多事情之后,我觉得这是不可能的。 我已提交功能请求:

http://youtrack.jetbrains.com/issue/IDEA-119650

【讨论】:

以上是关于在 IntelliJ IDEA 中重新格式化混合内容 XML的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 代码重新格式化不起作用

IntelliJ IDEA 在项目中禁用编辑/格式化 .svg 图像

如何为 Intellij IDEA 启用自动格式化代码?

Intellij IDEA,格式化一个项目中的所有代码

IntelliJ IDEA 12 保留空行

IntelliJ IDEA 中的 Drools 支持