JavaScript È°¿ëÆÁ
2015.06.03 / 21:51

chrome, operaµî ºê¶ó¿ìÀú¿¡¼­ xmlÀÇ selectNodes, selectSingleNode »ç¿ëÇϱâ

IamCoder
Ãßõ ¼ö 211

Ãâó : http://www.sadev.co.za/content/wss-and-audience-targeting-part-ii

 

 

 

 

// check for XPath implementation
if (document.implementation.hasFeature("XPath", "3.0")) {

    // prototying the XMLDocument.selectNodes
    XMLDocument.prototype.selectNodes = function(cXPathString, xNode) {
        if (!xNode) { xNode = this; }

        var oNSResolver = document.createNSResolver(this.ownerDocument == null ? this.documentElement : this.ownerDocument.documentElement);
        function resolver() {
            return 'http://schemas.saarchitect.net/ajax/2008/09/user';
        }

        var aItems = this.evaluate(cXPathString, xNode, resolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        var aResult = [];
        for (var i = 0; i < aItems.snapshotLength; i++) {
            aResult[i] = aItems.snapshotItem(i);
        }
        return aResult;
    }

    // prototying the Element
    Element.prototype.selectNodes = function(cXPathString) {
        if (this.ownerDocument.selectNodes) {
            return this.ownerDocument.selectNodes(cXPathString, this);
        }
        else { throw "For XML Elements Only"; }
    }

    // prototying the XMLDocument.selectSingleNode
    XMLDocument.prototype.selectSingleNode = function(cXPathString, xNode) {
        if (!xNode) { xNode = this; }
        var xItems = this.selectNodes(cXPathString, xNode);
        if (xItems.length > 0) {
            return xItems[0];
        }
        else {
            return null;
        }
    }

    // prototying the Element
    Element.prototype.selectSingleNode = function(cXPathString) {
        if (this.ownerDocument.selectSingleNode) {
            return this.ownerDocument.selectSingleNode(cXPathString, this);
        }
        else { throw "For XML Elements Only"; }
    }
};