Skip to content Skip to sidebar Skip to footer

Get The Full Path Of A Node, After Get It With An Xpath Query In Javascript

i have the next instruction, in JavaScript: var firstScene = document.evaluate('//Scene', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); so my question is how to get

Solution 1:

Using this getXPath() function:

functiongetXPath(node, path) {
    path = path || [];
    if(node.parentNode) {
      path = getXPath(node.parentNode, path);
    }

    if(node.previousSibling) {
      var count = 1;
      var sibling = node.previousSiblingdo {
        if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {count++;}
        sibling = sibling.previousSibling;
      } while(sibling);
      if(count == 1) {count = null;}
    } elseif(node.nextSibling) {
      var sibling = node.nextSibling;
      do {
        if(sibling.nodeType == 1 && sibling.nodeName == node.nodeName) {
          var count = 1;
          sibling = null;
        } else {
          var count = null;
          sibling = sibling.previousSibling;
        }
      } while(sibling);
    }

    if(node.nodeType == 1) {
      path.push(node.nodeName.toLowerCase() + (node.id ? "[@id='"+node.id+"']" : count > 0 ? "["+count+"]" : ''));
    }
    return path;
  };

pass the DOM ojbect obtained from firstScene.iterateNext() to the getXPath() method and it will return an array with all of the XPATH steps.

You can then use the array join() method to return a full XPATH expression:

getXPath(firstScene.iterateNext()).join("/");

Post a Comment for "Get The Full Path Of A Node, After Get It With An Xpath Query In Javascript"