【问题标题】:Doesn't Monaco Editor support XML language by default?Monaco Editor 默认不支持 XML 语言吗?
【发布时间】:2019-12-06 19:10:57
【问题描述】:

我正在尝试将 Monaco Editor 用于 XML 语言,但在呈现编辑器实例时,XML 字符串没有被格式化,而它在 JSON 中工作正常。

我也没有在编辑器的上下文菜单中找到“格式化文档”选项(如果它是用 XML 语言打开的)。 Monaco 编辑器是否默认支持 XML 格式?

【问题讨论】:

  • 请提供minimal, reproducible example。至少提供您尝试过的代码。仅供参考,摩纳哥默认支持 XML 。另外,您要问两个不同的问题:1) Monaco 是否支持 XML 文件,以及 2) Monaco 默认情况下是否提供 XML 格式化程序。

标签: xml visual-studio-code monaco-editor visual-studio-monaco


【解决方案1】:

看来 Monaco Editor 默认不格式化 xml。我的一位同事 - @thewahome,必须编写代码来格式化 xml。如果你对如何格式化 xml 感兴趣,下面的 sn-p 会有所帮助。

function formatXml(xml: any) {
  const PADDING = ' '.repeat(2);
  const reg = /(>)(<)(\/*)/g;
  let pad = 0;

  xml = xml.replace(reg, '$1\r\n$2$3');

  return xml.split('\r\n').map((node: any, index: number) => {
    let indent = 0;
    if (node.match(/.+<\/\w[^>]*>$/)) {
      indent = 0;
    } else if (node.match(/^<\/\w/) && pad > 0) {
      pad -= 1;
    } else if (node.match(/^<\w[^>]*[^\/]>.*$/)) {
      indent = 1;
    } else {
      indent = 0;
    }

    pad += indent;

    return PADDING.repeat(pad - indent) + node;
  }).join('\r\n');
}

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2017-02-19
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2016-10-06
    相关资源
    最近更新 更多