-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathXPathKit.js
More file actions
70 lines (63 loc) · 2.58 KB
/
XPathKit.js
File metadata and controls
70 lines (63 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
function XPathKit(myXmlObject,myPath){
//---------------------------------------------------------PROPERTIES
this.path = myPath;
this.xmlObject = myXmlObject;
this.count = 0;
this.nodes;
var i = -1;
if(window.ActiveXObject){//activexobject doesnt exist unless it;s ie
this.xmlObject.setProperty("SelectionLanguage","XPath"); // xpath sorts through arrays starting at one this sets it so ie works that way too
this.nodes = this.xmlObject.selectNodes(path);
this.count = nodes.length;
}else{
//evaluate the xpath xpression
this.count = this.xmlObject.evaluate("count("+path+")",this.xmlObject,null,XPathResult.ANY_TYPE,null).numberValue;
//returns an xpath result object
this.nodes = this.xmlObject.evaluate(path,this.xmlObject,null,XPathResult.ANY_TYPE,null);
}
//---------------------------------------------------------METHODS
this.read = function(){
if(window.ActiveXObject){//activexobject doesnt exist unless it;s ie
i+=1;
if(!(i >= this.count)){
return this.nodes[i].childNodes[0].nodeValue;
}else{
i = 0;
}
}else{
var result = this.nodes.iterateNext();
//interateNext() will return a false when there are no more nodes left
return result.childNodes[0].nodeValue;
result = this.nodes.iterateNext();
}
return false;
}
this.newQuery = function(myPath){
this.path = myPath;
var i = -1;
if(window.ActiveXObject){//activexobject doesnt exist unless it;s ie
this.xmlObject.setProperty("SelectionLanguage","XPath"); // xpath sorts through arrays starting at one this sets it so ie works that way too
this.nodes = this.xmlObject.selectNodes(myPath);
this.count = this.nodes.length;
}else{
//evaluate the xpath xpression
this.count = this.xmlObject.evaluate("count("+myPath+")",this.xmlObject,null,XPathResult.ANY_TYPE,null).numberValue;
//returns an xpath result object
this.nodes = this.xmlObject.evaluate(myPath,this.xmlObject,null,XPathResult.ANY_TYPE,null);
}
}
}
function query(myPath){
this.path = myPath;
var i = -1;
if(window.ActiveXObject){//activexobject doesnt exist unless it;s ie
this.xmlObject.setProperty("SelectionLanguage","XPath"); // xpath sorts through arrays starting at one this sets it so ie works that way too
this.nodes = this.xmlObject.selectNodes(myPath);
this.count = this.nodes.length;
}else{
//evaluate the xpath xpression
this.count = this.xmlObject.evaluate("count("+myPath+")",this.xmlObject,null,XPathResult.ANY_TYPE,null).numberValue;
//returns an xpath result object
return this.nodes = this.xmlObject.evaluate(myPath,this.xmlObject,null,XPathResult.ANY_TYPE,null);
}
}