2010-05-02 6 views
0

해당 배열의 다음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> 

이 어떻게 효율적으로 배열하고 channelitemspudDate에 액세스 할 XML뿐만 아니라 pudDate에게 주어.

+0

서버 측 언어를 사용하고 있습니까? – Sarfraz

+0

@Sarfraz : 실제로 파이어 폭스 확장 기능에서 사용하려고하는 클라이언트 측 자바 스크립트입니다. – Pablo

+0

으로 아이템 컬렉션을 얻을 수 있습니다. var items = xmlDoc.getElementsByTagName ("item"); 그러나 각 요소를 반복하고 태그 이름을 확인해야한다고 믿을 수는 없습니다 ... – Pablo

답변

1

document.evaluate을 사용하면 xpath를 사용할 수 있습니다 (IE에서는 필요하지 않은 한). 다음 함수는 내가 사용의 :

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; 
} 

경우 귀하의 경우 expression에 (트리의 모든 item 요소) 또는 "//chanel/items" (모든 나무에서 pubdates에 대한) "//channel/pubdate|channel/item/pubdate" 같은 것을 할 수 있고, rootEl합니다 (인 xml) 문서 루트.

이 함수는 xpath-expression에서 요청한 요소가 들어있는 배열을 반환합니다.