获取js中xml节点的行号

时间:2015-05-29 06:45:16

标签: javascript xpath evaluation line-numbers

我正在尝试验证(自定义规则)xml源代码。因此,我使用document.evaluate和某个xpath解析源代码并验证结果节点。 如果节点不正确,我想在源代码中给出节点行号错误。

我怎样才能完成这项工作?

1 个答案:

答案 0 :(得分:1)

我有类似的问题,我写了一个函数,根据getElementsByTagName的结果在原始字符串中找到第n个标记。 它是这样的:

function xmlNodeToOriginalLineNumber(element, xmlRootNode, sContent) {
    var sTagName = element.tagName;
    var aNodeListByTag = xmlRootNode.getElementsByTagName(sTagName);
    var iMaxIndex = 0;
    for (var j = 0; j < aNodeListByTag.length; j++) {
        if (aNodeListByTag.item(j) === element) {
            iMaxIndex = j;
            break;
        }
    }
    var regex = new RegExp("<" + sTagName + "\\W", 'g');
    var offset = 0;
    for (var i = 0; i <= iMaxIndex; i++) {
        offset = regex.exec(sContent).index;
    }
    var line = 0;
    for (var i = 0; i < sContent.substring(0, offset).length; i++) {
        if (sContent[i] === '\n') {
            line++;
        }
    }
    return line + 1;
}

我更新了您的示例:https://jsfiddle.net/g113c350/3/