2013-11-21 33 views
0

我有一個查詢,在IE中正常工作,但我似乎無法讓它在FF或Chrome中正確運行。FF/Chrome的xpath查詢

... 
<calendars> 
<totalDates>2</totalDates> 
<date> 
    <dayDate>2013-12-03</dayDate> 
    <intervals> 
     <intervalName>AM</intervalName> 
     <intervalName>PM</intervalName> 
    </intervals> 
</date> 
<date> 
    <dayDate>2013-12-04</dayDate> 
    <intervals> 
     <intervalName>AM</intervalName> 
     <intervalName>PM</intervalName> 
    </intervals> 
</date> 
</calendars> 
... 

要獲得在IE中intervalName節點爲 「2013年12月4日」 我用:

intervalNodes = resp.documentElement.selectNodes("/calendars/date[dayDate='2013-12-04']/intervals/intervalName"); 

如何獲得intervalName節點FF /鉻?

感謝您的幫助, Scott。

回答

0

您可以使用http://www.w3.org/TR/DOM-Level-3-XPath/xpath.html#XPathEvaluator

var result = resp.evaluate("/calendars/date[dayDate='2013-12-04']/intervals/intervalName", resp, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null); 
    var node; 
    while ((node = result.iterateNext()) != null) 
    { 
    var name = node.textContent; 
    } 
+0

嗨馬丁,當我運行代碼,我得到:結果:XPathResult 的booleanValue:[異常:類型錯誤] invalidIteratorState:假 numberValue:[異常:類型錯誤] 與resultType:5 singleNodeValue:[例外: TypeError] snapshotLength:[Exception:TypeError] stringValue:[Exception:TypeError]有沒有想法? – Scott

+0

你運行了哪些代碼,只是'evaluate'調用?或評估加我發佈的while循環? 'selectNodes'爲你提供了一個'NodeList',它與數組非常類似,但是'evaluate'返回一個'XPathResult',爲此你需要應用代碼,比如我發佈的'while'循環,然後你可以訪問這個值如圖所示。 –

+0

我跑了整個事情,包括while循環。沒有任何返回,所以'var name'代碼永遠不會被輸入。 xpath會有問題嗎? – Scott