CodeMirror XML模式:读取所有属性

CodeMirror XML模式:读取所有属性,xml,codemirror,Xml,Codemirror,在XML模式下运行的CodeMirror中是否有方法读取光标位置处标记的所有属性 光标处的标记可通过以下方式确定: var cur=cm.getCursor(), 令牌=cm.getTokenAt(cur); 例如: 语句“”可能导致以下情况: { id:“1”, 名称:“测试” } 谢谢你的建议。这可能会帮助一些人 cm.on("cursorActivity", function () { var cur = cm.getCursor(), tagList = [

在XML模式下运行的CodeMirror中是否有方法读取光标位置处标记的所有属性

光标处的标记可通过以下方式确定:

var cur=cm.getCursor(),
令牌=cm.getTokenAt(cur);

例如: 语句“
”可能导致以下情况:

{
id:“1”,
名称:“测试”
}


谢谢你的建议。

这可能会帮助一些人

cm.on("cursorActivity", function () {
    var cur = cm.getCursor(),
        tagList = [
            "control",
            "fql",
            "text"
        ],
        range = cm.getViewport(),
        attributes = {};

    range.from = Math.min(range.from, cur.line);
    range.to = Math.max(cur.line + 1, range.to);

    var match = CodeMirror.findMatchingTag(cm, cur, range);

    if (match && match.at === "open" && tagList.indexOf(match.open.tag.toLowerCase()) > -1) {
        var doc = cm.getDoc(),
            tagLine = doc.getRange(match.open.from, match.open.to, false).join(""),
            re = /(\S+)\s*?=\s*(['"])(.*?|)\2/g,
            m;

        while ((m = re.exec(tagLine)) !== null) {
            if (m.index === re.lastIndex) {
                re.lastIndex++;
            }

            attributes[m[1]] = m[3];
        }

        console.log(attributes);
    }
});

这可能对某人有帮助

cm.on("cursorActivity", function () {
    var cur = cm.getCursor(),
        tagList = [
            "control",
            "fql",
            "text"
        ],
        range = cm.getViewport(),
        attributes = {};

    range.from = Math.min(range.from, cur.line);
    range.to = Math.max(cur.line + 1, range.to);

    var match = CodeMirror.findMatchingTag(cm, cur, range);

    if (match && match.at === "open" && tagList.indexOf(match.open.tag.toLowerCase()) > -1) {
        var doc = cm.getDoc(),
            tagLine = doc.getRange(match.open.from, match.open.to, false).join(""),
            re = /(\S+)\s*?=\s*(['"])(.*?|)\2/g,
            m;

        while ((m = re.exec(tagLine)) !== null) {
            if (m.index === re.lastIndex) {
                re.lastIndex++;
            }

            attributes[m[1]] = m[3];
        }

        console.log(attributes);
    }
});