2013-07-21 2 views
1

XML 파일을 검색하려고합니다. 'localteam의 이름이 내 쿼리 (예 :'팀 A ') ET에서 하위 요소 검색

  • 일치하는 경우 발견 일치는'awayteam의 이름이 내 두 번째 조건 (예를 들어 '팀 B'를 일치 체크하면 나는

    • 확인해야 같은 요소 내의 'localteam'아래에있는 요소입니다.
    • 'awayteam'이 내 쿼리와 일치하면 ('match'에있는) 부모의 ID를 가져 와서 검색을 종료하십시오.

    나는 localteam 요소에 접근 할 수 있지만 그 다음엔 멀리서도 검색하는 방법을 모르겠다. 그리고 아이디를 얻으려면 '위로'올라간다. 나는 child.iter () 및 child.find (도 'awayteam'),하지만

    for child in root.iter('localteam'): 
        gs_name = child.get('name') 
        if gs_name == 'Team A': 
         print child.tag, child.attrib 
         for step_child in child.iter(): 
          print step_child.tag, step_child.attrib 
          gs_name = child.get('name') 
    

    XML

    <scores sport="sports"> 
        <category name="NAME" id="1419" file_group="USA"> 
         <match date="21.07.2013" time="04:00" status="Finished" id="56456456"> 
         <localteam name="Team A" /> 
         <random name="yyy" /> 
         <awayteam name="Team B" /> 
         <random name="xxx" /> 
    </match> 
    
  • 답변

    2

    검색 match을위한 .. 지금까지 내가 가지고 ..

    을 일했다 대신 요소 다음 find 통화 아무것도 찾을 수없는 경우, 당신은 몇 가지 추가 검사 나 오류 처리를 추가 할 수 있도록

    for match in root.iter("match"): 
        if (match.find("localteam").get("name") == "Team A" and 
         match.find("awayteam").get("name") == "Team B"): 
         print match.get("id") 
         break 
    

    위, AttributeErrors을 올릴 것이다; 예 :

    for match in root.iter("match"): 
        localteam = match.find("localteam") 
        awayteam = match.find("awayteam") 
        if localteam is not None and awayteam is not None and ... 
    
    +0

    대단히 감사합니다. – Jim