2010-04-01 4 views
6

아래 XML에서 StateLongName 및 StateShortName 값을 추출하려고합니다.jQuery로 xml에서 데이터를 찾고 추출하는 방법

jQuery를 사용하여 간단하고 세련된 방법이 있어야한다는 것을 알고 있습니다.

<NewDataSet> 
    <Table> 
    <StateLongName>Alabama</StateLongName> 
    <StateShortName>AL</StateShortName> 
    </Table> 
    <Table> 
    <StateLongName>Alaska</StateLongName> 
    <StateShortName>AK</StateShortName> 
    </Table> 

...elments removed for brevity 

</NewDataSet> 

다음은 내가 시도한 것입니다.

위의 XML을 Javascript 변수 이름 xml에로드하십시오.

시도 번호

$(xml).find("TABLE").each(function() 
{ 
    var stateName = $(this).find("StateLongName").innerText; 
    var stateCode = $(this).find("StateShortName").innerText; 
}); 

1 아무것도 찾을 수없는 # 1을 시도하고 결코 stateName 및 stateCode 변수를로드 내부 간다.

시도 # 2

$(xml).find("StateLongName").each(function() 
{ 
    var stateName = $(this).find("StateLongName").innerText; 
    var stateCode = $(this).find("StateShortName").innerText; 
}); 

시도 # 2 일치하는 항목을 찾을 않습니다는, 그러나 stateName 및 stateCode은 정의되지 않은 남아 있습니다.

시도 # 3

$(xml).find("StateLongName").each(function() 
{ 
    var stateName = $($(xml).find('StateLongName').parent()[0].innerHTML)[1].data; 
    var stateCode = $($(xml).find('StateLongName').parent()[0].innerHTML)[5].data; 
}); 

시도 # 3 작품 만이 가지고 더 나은 방법이 될 수 있습니다. 제발 저를 계몽하십시오.

시간 내 주셔서 감사합니다. 이 사람이 조금 이해할 수 있었다 죄송합니다, <table>를 사용하지 않는, 그것은 <tbody> 일들이 거기에서 낯선 얻을 생성 HTML로 취급 :

$(xml).find("Table").each(function() { 
    var stateName = $(this).find("StateLongName").text(); 
    var stateCode = $(this).find("StateShortName").text(); 
}); 

업데이트 :

+0

무시 내 대답은 - 난 당신의 질문은 더 일반적인라고 생각! –

답변

7

그것은이 같은 "Table"를 사용하는 경우 민감한 여기 http://jsfiddle.net/Yvetc/

전체 베어 테스트 페이지의 :

가 : 당신이 다른 단지 접 아무것도를 변경 한 경우, 작동 것이다, 여기가 <tabl>로 변경하여 예입니다 이것에 대한
+0

그 값을 두 번 이상 사용할 때'var $ this = $ (this)'를 정의하고 싶습니다. –

+0

빠른 응답 주셔서 감사합니다. Nick. 불행하게도 사건을 바꾸는 것은 여전히 ​​일치하는 것을 찾지 못했습니다. –

+0

.find() 메서드에는 대/소문자 구분이 적용되지 않는 것으로 보입니다. $ (xml) .find ("statelongname")의 대소 문자 버전은 일치하지만 $ (xml) .find ("table")의 대소 문자 버전은 일치하지 않습니다. –

2
$.ajax({ 
      type: "GET", 
      url: "labels.xml", 
      dataType: "xml", 
      success: function(xml) { 
       $(xml).find('label').each(function(){ 
        var id_text = $(this).attr('id') 
        var name_text = $(this).find('name').text() 

        $('<li></li>') 
         .html(name_text + ' (' + id_text + ')') 
         .appendTo('#update-target ol'); 
       }); //close each(
      } 
     }); //close $.ajax(

샘플 XML :

<?xml version="1.0" encoding="iso-8859-1"?> 


<labels> 
    <label id='ep' added="2003-06-10"> 
    <name>Ezra Pound</name> 
    <address> 
     <street>45 Usura Place</street> 
     <city>Hailey</city> 
     <province>ID</province> 
    </address> 
    </label> 
    <label id='tse' added="2003-06-20"> 
    <name>Thomas Eliot</name> 
    <address> 
     <street>3 Prufrock Lane</street> 
     <city>Stamford</city> 
     <province>CT</province> 
    </address> 
    </label> 
    <label id="lh" added="2004-11-01"> 
    <name>Langston Hughes</name> 
    <address> 
     <street>10 Bridge Tunnel</street> 
     <city>Harlem</city> 
     <province>NY</province> 
    </address> 
    </label> 
    <label id="co" added="2004-11-15"> 
    <name>Christopher Okigbo</name> 
    <address> 
     <street>7 Heaven's Gate</street> 
     <city>Idoto</city> 
     <province>Anambra</province> 
    </address> 
    </label> 
</labels> 
관련 문제