2010-05-02 96 views
0

鑑於下面的XML訪問DOM元素JS

<rss> 
    <channel> 
    ... 
    <pubDate>20/30/2099</pubDate> 
    ... 
    <item> 
     ... 
     <pubDate>10/30/2099</pubDate> 
     ... 
    </item> 
    ... 
    <item> 
     ... 
     <pubDate>40/30/2099</pubDate> 
     ... 
    </item> 
    ... 
    </channel> 
</rss> 

我將如何有效地訪問pudDatechannelitems作爲陣列,以及pudDate數組英寸

+0

您正在使用哪種服務器端語言? – Sarfraz 2010-05-02 07:41:29

+0

@Sarfraz:它實際上是客戶端JavaScript,專門用於Firefox擴展。 – Pablo 2010-05-02 07:45:21

+0

想通了,可以用 var items = xmlDoc.getElementsByTagName(「item」); 但是,不能相信我必須遍歷每個元素並檢查標記名... – Pablo 2010-05-02 08:00:29

回答

1

您可以使用xpath(只要您不需要IE瀏覽器),使用document.evaluate。這裏的功能我使用它:

你的情況 expression
function getFromXPath(expression,rootEl){ 
    rootEl = rootEl || docbody; 
    var ret = [] 
      ,xresult = document.evaluate(expression, rootEl, null, 
         XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null) 
      ,result = xresult.iterateNext(); 
    while (result) { 
    ret[ret.length]= result; 
    result = xresult.iterateNext(); 
    } 
    return ret; 
} 

在哪裏可以像"//channel/pubdate|channel/item/pubdate"(樹中的所有pubdates)或"//chanel/items"(樹中的所有item元素),並rootEl作爲( xml)文檔根目錄。

該函數返回一個包含xpath-expression請求的元素的數組。