2017-09-21 9 views
0

일부 답변을 스택에서 읽고 잠시 동안이 문제를 해결하려고합니다. (예는 foobar 등)의 속성 내부 Python에서 elementTree의 findall을 사용하여 xml 문서에서 태그 수를 검색하는 방법

  • 숫자 (예 : foo는, 바 타입과) 같은 태그 요소의

    • 번호 :

      나는 출력 할 수 있도록하려면

      샘플 예상 출력 (또는 그 어떤 것도 변화 :

      foo, 1 
      bar, 2 
      type, 8 
      
      foobar, 10 
      foobar, 20 
      

      나는하지 않고 그것을 할 노력하고 있어요 rootchild 노드 방법을 사용합니다. 내가 얻고

      XML 문서

      <first> 
          <foo> 
           <bar> 
           <type foobar="1"/> 
           <type foobar="2"/> 
           <type foobar="3"/> 
           <type foobar="4"/> 
           </bar> 
           <bar> 
           <type foobar="1"/> 
           <type foobar="2"/> 
           <type foobar="3"/> 
           <type foobar="4"/> 
           </bar> 
          </foo> 
      </first> 
      

      파이썬 코드

      import xml.etree.ElementTree as ET 
      fname = 'Library4.xml' # handle 
      stuff = ET.parse(fname) 
      
      for atype in stuff.findall('type'): 
          print(atype.get('foobar')) 
      
      all  = stuff.findall('bar') 
      print('bar', all) 
      
      all  = stuff.findall('foo') 
      print('foo', all) 
      

      출력 :

      bar [] 
      foo [<Element 'foo' at 0x000001E3C71F8B38>] 
      

      해피 더욱 명확히한다. 내 오류와 실수를 지적하기 위해 도움을 주셔서 감사합니다. 감사.

  • +0

    당신은 또한 당신이 기대하는 출력 할 수 있나요? –

    +0

    @ChetanVasudevan 예 제가 얻으려는 출력을 편집하고 명확하게했습니다. 감사. –

    답변

    0

    그래서 아래 코드를 사용하고 모양을 계산할 수 있습니다. 예를 들어 아래 코드를 따르십시오. 이것에 대한

    from xml.dom import minidom 
        fname = 'library4.xml' 
        xmldoc = minidom.parse('library4.xml') 
        print("type " + str(len(xmldoc.getElementsByTagName('type')))) 
        print("foo " + str(len(xmldoc.getElementsByTagName('foo')))) 
        print("bar " + str(len(xmldoc.getElementsByTagName('bar')))) 
    

    출력은 다음과 같습니다 :

    type 8 
        foo 1 
        bar 2 
    
    +0

    @Kane Chew, 이걸 찾고 계셨습니까? –

    +0

    'minidom'을 사용하는 스택 게시물을 보았습니다. 하지만 구문 분석과 findall을 사용하여 직접 수행하려고합니다. 온라인 자료는 그것이 가능하다는 것을 암시하는 것처럼 보이지만, 어떻게 생각해 내는지. https://docs.python.org/3/library/xml.etree.elementtree.html, 20.5.3 미만 참고 번호 20.5.3.1. 기능들 –