2012-10-18 2 views
4

와 XML 구조를 구문 분석하는 방법 : 나는 이름을 좀하고 싶습니다이것은 XML 파일입니다 어떻게 자바 스크립트 JQuery와

<Test> 
    <Category> 
     <SubCat> 
      <Name>Name</Name> 
      <Properties> 
       <Key>Key</Key> 
       <Value>Value</Value> 
      </Properties> 
     </SubCat> 
     <SubCat> 
      <Name>Name</Name> 
      <SubCat> 
       <Name>AnotherName</Name> 
       <Properties> 
        <Key>Key</Key> 
        <Value>Value</Value> 
       </Properties> 
      </SubCat> 
     </SubCat> 
    </Category> 
</Test> 

. 그러나 첫번째 SubCat의 이름 만. 그리고 속성 키 값. 문제는 SubCat가 두 번 존재한다는 것입니다.

나는 노력이 :

$(xml).find('SubCat').each(function() { 
    var name = $(this).find("Name").text(); 
    alert(name); 

} 

하지만이 쇼 제 1 및 제 2 SubCat의 이름입니다.

나는 이런 식으로 검색합니다.

rootElement(Category).selectallchildren(SubCat).Name for the first SubCat Name 
rootElement(Category).selectallchildren(SubCat).(SubCat).Name for the second SubCat Name 

그리고 키에 대한 동일한 명시 적으로 선택하고 여기에 트릭 CSS3 선택기를 평가하는 jQuery의 기능을 활용하는 것입니다

+0

http://api.jquery.com/category/selectors/ - 답변을 포함해야합니다 – KyorCode

+1

$ (xml) .find ('SubCat ') 좁은 방() – philipp

+0

난이'$ XML (시도) .find ('장르'). 각 (함수() { \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t,321 0 \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t $ (XML) .find ('SubCat : 제'). 각 (함수() { \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t var name = $ (this) .find ("Name").본문(); \t \t \t \t \t \t \t \t \t 경고 (이름); \t \t \t \t \t \t \t \t \t});});'하지만 나에게 처음 subcat 항목이 작품 – PMe

답변

1

값.

SubCat:nth-of-type(1)은 임의의 부모 요소를 사용하여 SubCat의 모든 첫 번째 항목을 선택합니다.

그래서이 작동합니다 :

$(xml).find("SubCat:nth-of-type(1)").each(function(){ 
    var name = $(this).find("Name").text(), 
     property = { }; //use an object to store the key value tuple 
    property[$(this).find("Properties Key").text()] = $(this).find("Properties Value").text(); 

    console.log(name, property); 
}); 

//Output: 
//Name Object { Key="Value" } 
//AnotherName Object { Key="Value"} 

을 희망 만약 당신이 원하는; 첫 대답을 쓸 때 혼란스러워서 분명히 질문을 잘못 해석했습니다 ...

+0

의 이름을 보여줍니다. 그러나 그것은 Category의 Name "Name"을 가진 첫 번째 Element SubCat 만 보여줍니다. 하지만 나도 두 번째가 필요해. 카테고리에서 모든 하위 캣과 이름이 필요합니다. 카테고리의 모든 다음 자식. – PMe

+1

좋아, 이제 정말 혼란 스럽다. ;) 그러나 그것은 모두'.find()'에서 사용 된 CSS 선택자에 달려있다. 'Category'의 직계 하위 요소 인'SubCat' 요소 만 원하면'Category> SubCat' 선택자를 사용하십시오. 이름을 얻으려면'.find ("Name : first"). text()'를 사용해야합니다. 아직도 내가 너를 잘못 해석하고 있다면, 너는 어떤 결과물을 갖고 싶은지를 말해줘. – Aletheios

+0

그게 다야 .--) 정말 고마워. – PMe

관련 문제