您好,我正在尝试使用XPATH获取元素。我已经使用变量XML中的xmlHTTP.open命令存储了我获取的XML。但是,我不知道如何使用XPATH来获取存储在变量中的XML中的元素。
有什么建议吗?
以下是代码:
var XML;
var Day;
function httpGet(location,week,day){
var xmlHttp = null;
Day = day;
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%22http%3A%2F%2Fwww.bsd.ufl.edu%2Fdining%2FMenus%2FdinHallMenu.aspx%3Flocid%3D"+location+"%26ms%3D"+week+"%26%22&format=xml&diagnostics=true&callback=", false );
xmlHttp.send( null );
XML = xmlHttp.responseText;
console.log(XML)
getResults();
}
function getResults(){
var getElementByXpath = function(path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
};
答案 0 :(得分:0)
以下函数,用于计算xpath并根据xpath返回一个或多个节点。
function evaluateXMLPath(expr,node){
var retVal=new Array();
//IE
if(window.ActiveXObject || xhttp.responseType == "msxml-document"){
try{
retVal=node.selectNodes(expr);
}catch(e){
alert("IE:xpath not supported");
}
}
//chrome, firefox,opera,etc.
else if(document.implementation && document.implementation.createDocument){
try{
var nodes=node.evaluate(expr, node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
for(var i=0;i<nodes.snapshotLength;i++){
retVal[retVal.length]=nodes.snapshotItem(i);
}
}catch(ex){
alert("Other:xpath not supported");
}
}
return retVal;
}
您使用上述功能,如下所示。
var capNode=evaluateXMLPath("//root",xml);
var textStr = capNode[0].getElementsByTagName("text")[0].childNodes[0].nodeValue;
这可能会有所帮助。感谢