我有越來越的XPath返回任何東西的問題。我只在Firefox中嘗試過,但我已經使用了一堆不同的示例,但它們都沒有工作。的XPath評估()沒有返回任何
function populateFilters(productType) {
callAjax.request({
url: './Products.xml',
onSuccess: function(rootNode, fullText) {
var path = '//product';
// code for IE
if (window.ActiveXObject)
var nodes=rootNode.selectNodes(path);
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
var nodes=rootNode.evaluate(path, rootNode, null, 0, null);
for (var i = 0; i < nodes.length; ++i) {
nodes[i].childNodes[0];
}
},
onError: function(errCode, responseStatus) {alert('An error has occured. Please contact the site\'s Webmaster.\n\n' + errCode + '\n' + responseStatus);}
});
}
ajax調用工作正常......我得到的XML文檔,並能夠瀏覽DOM沒有問題。我遇到的問題是,當代碼擊中rootNode.evaluate()
電話,什麼都不會返回。沒有錯誤,也沒有數據。下面是XML的一個例子片段:
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<product>
<type>Snowboard</type>
<brand>DC</brand>
</product>
<product>
<type>Skateboard</type>
<brand>Banana</brand>
</product>
<product>
<type>Clothing</type>
<brand>BoardDokter</brand>
</product>
</root>
我能想到的唯一的事情是,var path = '//product';
是不正確的,但我看過很多例子,它真的應該工作。
任何人有任何想法?火狐4在Windows XP中,並在Windows 7
我懷疑XML源的「榜樣摘錄」。你確定它沒有任何命名空間嗎?這個問題最常見的原因是人們沒有意識到命名空間的重要性,所以他們將它們從他們發佈的源XML中移除。 – 2011-04-07 22:20:28
沒有。這個系統只是我快速爲朋友做的事情,所以他可以填充他的網頁,直到他可以獲得數據庫。沒有名稱空間。您在代碼片段中看到的內容實際上是從實際文檔複製/粘貼的。爲了長度的原因,我刪除了一些產品,但這只是關於它。 – Sivvy 2011-04-08 00:21:47