2011-08-02 6 views
2

하위 요소의 값으로 검색하여 xml 요소를 찾을 수 있습니까?jQuery로 xml 하위 요소 선택

그래서 같은 XML의 경우 : ETA에 태그 '자식 요소를 얻을 수 있도록

<route> 
    <name>Lakeway</name> 
    <abrv>LAKE</abrv> 
    <eta> 
     <time>00:30</time> 
     <dest>MAIN</dest> 
    </eta> 
</route> 

난 단지 abrv 의 값이있는 경우는 어떻게 XML을 구문 분석?

각 요소를 루핑하지 않고 값을 정의 된 변수와 비교하지 않고 jQuery로이 작업을 수행 할 수 있습니까? 아니면 이것을 할 수있는 더 좋은 방법이 있습니까?

편집 :

다른 도메인에서 XML 피드를 구문 분석하려고합니다. 나는 xmlParse 함수로 그렇게 할 수 있는지, 아니면 jQuery의 Ajax 함수를 사용해야하는지 잘 모르겠다.

답변

1

이 같은 아마 뭔가 :

var xmlString = "<route><name>Lakeway</name><abrv>LAKE</abrv><eta><time>00:30</time><dest>MAIN</dest></eta></route>", 
xmlDoc = $.parseXML(xmlString), 
$xml = $(xmlDoc), 
$abrv = $xml.find("abrv").text() == "LAKE" ? $xml.find("abrv") : false; 

var time = $abrv.next().children("time").text(); 
var dest = $abrv.next().children("dest").text(); 

alert(time + " " + dest); 

http://jsfiddle.net/jensbits/UH2m5/

희망, 즉 당신이 시작 얻을 수 있습니다.

+0

어떻게 이것을 외부 XML 파일과 함께 사용할 수 있습니까? 그게 내가 실제로 찾고 있었던거야. – simon

+0

다른 방법을 사용하여 xml을 가져와야합니다. http://stackoverflow.com/questions/1292486/why-cant-i-load-an-external-resource-from-jquery-load-method –

+0

을 참조하십시오. 따라서 간단한 프록시를 사용하여 XML을 가져 왔지만 또 다른 질문이 있습니다. parseXML 함수를 사용하는 것과 $ .get ajax 함수를 사용하는 것 사이에 차이점이 있습니까? 따라서 xml 문자열을 선언하는 대신 $ .get을 사용하여 xml을 얻는다면 위에서 설명한 것과 같은 선택기를 사용할 수 있어야합니까? – simon

2

contains 필터를 사용하여이 값을 기반으로 노드를 필터링 할 수 있습니다.

뭔가 같은

$(xml).find('abrv:contains(LAKE) + eta > *') 

샘플 문서의 두 요소와의 jQuery 객체를 반환합니다.

<time>00:30</time> 
<dest>MAIN</dest> 

여기는 example입니다.