javascript - js中获取xml节点的行号

标签 javascript xpath evaluation line-numbers

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

我怎样才能实现这个目标?

最佳答案

我遇到了类似的问题,我编写了一个函数,根据 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/

关于javascript - js中获取xml节点的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522868/

相关文章:

javascript - 这有什么好处吗?使用 Javascript 检测和定位特定浏览器 CSS

基于Java的selenium webdriver - 单击按行文本动态更改表格内容中的元素(单击同一行中的文本输入)

c++ - 在 C++11 中, "lambda function"与 "lambda expression"和 "closure"相同吗?

javascript - 无法使用 Method Math Parser 评估数学表达式

javascript - 使用 JavaScript/jQuery 在文件浏览对话框中单击打开按钮后获取文件名

javascript - 使用箭头函数重写函数修复IE兼容性

javascript - xmlhttp 请求后未定义 $_POST

python - 如何在 Selenium 中选择没有选项标签的弹出菜单选项?

delphi - IXMLDOM 无法识别 XPath last() 函数?

基于票数和 5 星评级的对象评级算法