在 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的主要内容,如果未能解决你的问题,请参考以下文章