ElementTree를 사용할 때 XML 노드의 데이터에 액세스하려면 어떻게해야합니까?

lopezdp

이 링크에있는 XML을 구문 분석하고 있습니다.

구문 분석 할 XML 파일

노드 내부의 데이터에 액세스해야하는데 제가 작성한 프로그램이 노드 내부에 아무것도 없다고 알려주는 것 같습니다. 내 코드는 다음과 같습니다.

import urllib
import xml.etree.ElementTree as ET 

#prompt for link where xml data resides
#Use this link for testing: http://python-data.dr-chuck.net/comments_42.xml
url = raw_input('Enter URL Link: ')

#open url and prep for parsing
data = urllib.urlopen(url).read()

#read url data and convert to XML Node Tree for parsing
comments = ET.fromstring(data)

#the comment below is part of another approach to the solution
#both approaches are leading me into the same direction
#it appears as if the data inside the node is not being parsed/extracted
#counts = comments.findall('comments/comment/count')

for count in comments.findall('count'):
    print comments.find('count').text

'데이터'변수 만 출력하면 완전한 XML 트리가 표시됩니다. 그러나 특정 노드 내부의 데이터에 액세스하려고하면 노드가 다시 비워집니다.

또한 다음 코드를 인쇄하여 어떤 데이터를 반환할지 확인했습니다.

for child in comments:
    print child.tag, child.attrib

내가 얻은 출력은 다음과 같습니다.

메모 {} 댓글 {}

내가 뭘 잘못하고 있고 무엇을 놓치고 있습니까?

노드에 액세스하는 다른 루핑 전략을 시도 할 때 발생하는 오류 중 하나는 다음과 같습니다.

Traceback (most recent call last):
  File "xmlextractor.py", line 16, in <module>
    print comments.find('count').text
AttributeError: 'NoneType' object has no attribute 'text'

도와 주셔서 감사합니다 !!!

최신 정보:

나는 파이썬에 대한 etree 문서를 살펴보면서 내 접근 방식이 노드의 내용 대신 노드 속성을 '가져 오기'를 시도하고 있음을 깨달았습니다. 나는 아직도 답을 찾지 못했지만 나는 확실히 더 가깝다 !!!

2 차 업데이트 :

그래서 나는이 코드를 시도했습니다.

import urllib
import xml.etree.ElementTree as ET 

#prompt for link where xml data resides
#Use this link for testing: http://python-data.dr-chuck.net/comments_42.xml

url = raw_input('Enter URL Link: ')

#open url and prep for parsing
data = urllib.urlopen(url).read()

#read url data and convert to XML Node Tree for parsing
comments = ET.fromstring(data)

counts = comments.findall('comments/comment/count')

print len(counts)

for count in counts:
    print 'count', count.find('count').text

위에서이 코드를 실행할 때 내 :

print len(counts)

내 카운트 목록에 50 개의 노드가 있지만 여전히 동일한 오류가 발생합니다.

Traceback (most recent call last):
  File "xmlextractor.py", line 18, in <module>
    print 'count', count.find('count').text
AttributeError: 'NoneType' object has no attribute 'text'

노드의 내용에 액세스하려고 할 때 '텍스트'속성이 없다고 말하는 이유를 이해할 수 없습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까??

Matthias Wiehl

접근 방식에 대한 몇 가지 의견 :

for count in comments.findall('count'):
    print comments.find('count').text

comments.findall('count')comments이름을 가진 직계 자식 요소가 없기 때문에 빈 목록을 반환합니다 count.

for child in comments:
    print child.tag, child.attrib

라고하는 루트 노드의 직계 자식 요소를 반복합니다 note.

# From update #2
for count in comments.findall('comments/comment/count'):
    print 'count', count.find('count').text

여기, count입니다 Element나타내는 객체 count자체가 어떤 포함하지 않는 노드 count노드. 따라서 객체를 count.find('count')반환 NoneType합니다.

내가 올바르게 이해한다면 목표는 count노드 의 텍스트 값을 검색하는 것입니다 . 이를 달성 할 수있는 두 가지 방법은 다음과 같습니다.

for count in comments.findall('comments/comment/count'):
    print count.text

for comment in comments.iter('comment'):
    print comment.find('count').text

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Typescript를 사용할 때 NativeScript에서 Native API에 액세스하려면 어떻게해야합니까?

분류에서Dev

호스트가 액세스 포인트를 사용할 때 LAN에서 서로 액세스하도록하려면 어떻게해야합니까?

분류에서Dev

ObjectDataSource를 사용하여 App_Code의 클래스에 액세스하려면 어떻게해야합니까?

분류에서Dev

Android에서 여러 preferences.xml 파일을 생성 할 때 코드를 재사용하려면 어떻게해야합니까?

분류에서Dev

XSLT를 사용하여 다른 노드의 내용에 따라 XML 노드의 값을 얻으려면 어떻게해야합니까?

분류에서Dev

XSLT를 사용하여 다른 노드의 내용에 따라 XML 노드의 값을 얻으려면 어떻게해야합니까?

분류에서Dev

URI를 사용하여 다른 앱의 원시에 액세스하려면 어떻게해야합니까?

분류에서Dev

EWS (Exchange Webservices)를 사용하여 연락처의 PostOfficeBox에 액세스하려면 어떻게해야합니까?

분류에서Dev

URL의 XmL 데이터를 내 데이터베이스에 저장하려면 어떻게해야합니까?

분류에서Dev

이 메서드를 정적으로 액세스 할 수있게하려면 어떻게해야합니까?

분류에서Dev

Perl에서 XML :: LibXML을 사용하여 동일한 레벨에서 동일한 태그로 노드에 액세스하려면 어떻게해야합니까?

분류에서Dev

Cloudkit 앱이 데이터를로드 할 때로드하도록하려면 어떻게해야합니까?

분류에서Dev

사용자 지정 후크에서 서비스에 액세스 할 때 hook.remove를 활성화하려면 어떻게해야합니까?

분류에서Dev

PHP를 사용하여 OpenStreetMap API 데이터에 액세스하려면 어떻게해야합니까?

분류에서Dev

textboxfor를 사용할 때 확장 속성에서 모델 속성에 액세스하려면 어떻게해야합니까?

분류에서Dev

Windows 10 : mkdir을 사용할 때 "액세스 거부"를 수정하려면 어떻게해야합니까?

분류에서Dev

스레드 풀에서 스레드를 사용할 수있을 때까지이 코드를 대기하려면 어떻게해야합니까?

분류에서Dev

React useContext를 사용할 때 유형 인터페이스를 올바르게 정의하려면 어떻게해야합니까?

분류에서Dev

IP를 통해 액세스 할 때 웹 사이트를 도메인 이름 인 CentOS로 리디렉션하려면 어떻게해야합니까?

분류에서Dev

self.ids 메소드를 사용하여 kivy의 위젯 내부에있는 화면 요소에 액세스하려면 어떻게해야합니까?

분류에서Dev

Kotlin에서`getString ()`을 사용하여 Recycler Adapter 클래스에서`strings.xml`의 문자열에 액세스하려면 어떻게해야합니까?

분류에서Dev

R의 URL에서 데이터를 다운로드 할 때 오류를 피하려면 어떻게해야합니까?

분류에서Dev

스크롤 할 때 Django 앱에서 콘텐츠를로드하려면 어떻게해야합니까?

분류에서Dev

인덱스에 도달 할 때마다 코드를 실행하려면 어떻게해야합니까?

분류에서Dev

셀을 재사용 할 때 UISegmentedControl의 선택된 세그먼트를 UITableView 내에 유지하려면 어떻게해야합니까?

분류에서Dev

Ansible 노드 ssh 키를 Ansible의 모든 노드에 복사하려면 어떻게해야합니까?

분류에서Dev

내 어댑터의 데이터를 사용하여 GridView에 표시하려면 어떻게해야합니까?

분류에서Dev

MySQL에만 액세스 할 수있는 SSH 사용자를 생성하려면 어떻게해야합니까?

분류에서Dev

내 사용자 정의 모양 XML에 이미지를 추가하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    Typescript를 사용할 때 NativeScript에서 Native API에 액세스하려면 어떻게해야합니까?

  2. 2

    호스트가 액세스 포인트를 사용할 때 LAN에서 서로 액세스하도록하려면 어떻게해야합니까?

  3. 3

    ObjectDataSource를 사용하여 App_Code의 클래스에 액세스하려면 어떻게해야합니까?

  4. 4

    Android에서 여러 preferences.xml 파일을 생성 할 때 코드를 재사용하려면 어떻게해야합니까?

  5. 5

    XSLT를 사용하여 다른 노드의 내용에 따라 XML 노드의 값을 얻으려면 어떻게해야합니까?

  6. 6

    XSLT를 사용하여 다른 노드의 내용에 따라 XML 노드의 값을 얻으려면 어떻게해야합니까?

  7. 7

    URI를 사용하여 다른 앱의 원시에 액세스하려면 어떻게해야합니까?

  8. 8

    EWS (Exchange Webservices)를 사용하여 연락처의 PostOfficeBox에 액세스하려면 어떻게해야합니까?

  9. 9

    URL의 XmL 데이터를 내 데이터베이스에 저장하려면 어떻게해야합니까?

  10. 10

    이 메서드를 정적으로 액세스 할 수있게하려면 어떻게해야합니까?

  11. 11

    Perl에서 XML :: LibXML을 사용하여 동일한 레벨에서 동일한 태그로 노드에 액세스하려면 어떻게해야합니까?

  12. 12

    Cloudkit 앱이 데이터를로드 할 때로드하도록하려면 어떻게해야합니까?

  13. 13

    사용자 지정 후크에서 서비스에 액세스 할 때 hook.remove를 활성화하려면 어떻게해야합니까?

  14. 14

    PHP를 사용하여 OpenStreetMap API 데이터에 액세스하려면 어떻게해야합니까?

  15. 15

    textboxfor를 사용할 때 확장 속성에서 모델 속성에 액세스하려면 어떻게해야합니까?

  16. 16

    Windows 10 : mkdir을 사용할 때 "액세스 거부"를 수정하려면 어떻게해야합니까?

  17. 17

    스레드 풀에서 스레드를 사용할 수있을 때까지이 코드를 대기하려면 어떻게해야합니까?

  18. 18

    React useContext를 사용할 때 유형 인터페이스를 올바르게 정의하려면 어떻게해야합니까?

  19. 19

    IP를 통해 액세스 할 때 웹 사이트를 도메인 이름 인 CentOS로 리디렉션하려면 어떻게해야합니까?

  20. 20

    self.ids 메소드를 사용하여 kivy의 위젯 내부에있는 화면 요소에 액세스하려면 어떻게해야합니까?

  21. 21

    Kotlin에서`getString ()`을 사용하여 Recycler Adapter 클래스에서`strings.xml`의 문자열에 액세스하려면 어떻게해야합니까?

  22. 22

    R의 URL에서 데이터를 다운로드 할 때 오류를 피하려면 어떻게해야합니까?

  23. 23

    스크롤 할 때 Django 앱에서 콘텐츠를로드하려면 어떻게해야합니까?

  24. 24

    인덱스에 도달 할 때마다 코드를 실행하려면 어떻게해야합니까?

  25. 25

    셀을 재사용 할 때 UISegmentedControl의 선택된 세그먼트를 UITableView 내에 유지하려면 어떻게해야합니까?

  26. 26

    Ansible 노드 ssh 키를 Ansible의 모든 노드에 복사하려면 어떻게해야합니까?

  27. 27

    내 어댑터의 데이터를 사용하여 GridView에 표시하려면 어떻게해야합니까?

  28. 28

    MySQL에만 액세스 할 수있는 SSH 사용자를 생성하려면 어떻게해야합니까?

  29. 29

    내 사용자 정의 모양 XML에 이미지를 추가하려면 어떻게해야합니까?

뜨겁다태그

보관