인터넷상의 다른 서버에 RESTful 서비스가있다. 몇 가지 특성을 가진 단일 XML 항목을 반환하는 요청을 보내고 있습니다.JSON - for 루프 문제로 XML 서비스 사용하기
로컬로 저장된 XML을 사용하는 또 다른 python 함수가 있는데 매개 변수를 제공하면 모든 요소를 반복하고 해당 매개 변수와 일치하는 XML 항목 즉 mysite/search 만 반환합니다./123. 내가 할 수있는 미세 사용하여 해당 출력 : 다음 for 루프에서 row
를 사용하는 방법과
from xml.dom.minidom import parseString
import json
import urllib2
from django.http import HttpResponse
def index(request, number="1"):
#file = urllib2.urlopen('myfile.xml')
file = open('myfile.xml','r')
data = file.read()
dom = parseString(data)
rows = dom.getElementsByTagName("root")[0].getElementsByTagName("subroot")[0].getElementsByTagName("theData")
for row in rows:
return HttpResponse(json.dumps({'name':row.getAttribute("name"),'address': row.getAttribute("address"), 'phone': row.getAttribute("phone")}, sort_keys=True, indent=4))
공지 사항 row.getAttribute()
를 사용하여 속성에 액세스 할 수 있습니다. XML 항목이 1 개만있는 경우 루프가 필요하지 않으므로 반복하지 않으므로 row
객체는 getAttribute()
메서드를 사용합니다.
이 데이터를 검색하고 싶습니다. 아무도 도와 줄 수 있니?
추신 :이 단일 XML 데이터에서 루프를 실행하면 오류 메시지가 표시됩니다. TypeError: Iteration over a non-sequence
.
와우, 정말 고마워! 이제 완벽하게 작동합니다! 사실, 나는 또 다른 질문이 있는데, 나는 다른 스레드를 열어서는 안된다고 생각하지만 어쩌면 누군가가 도울 수있다. 내 urls.py에는 숫자 (예 : mysite/names/12)를 사용하는'(r '^ names/(\ d {1,2}) $', 'foo.views.index' 그 XML을,하지만 내가 대신 정수 대신 문자열을 취할 수있는 정규 표현식 어떻게합니까? eg mysite/names/john? thanks – eoinzy
패키지의 문서에있는 regexp 매뉴얼을 참조하십시오. 위의 해결책은'(r '^ names/(\ w +) $', 'foo.views.index')'; 또한 int 로의 변환을 제거하는 것을 잊지 마십시오. – fviktor