2013-08-14 2 views
0

나는 python으로 다음 코드를 수행하여 eXist-db에 저장된 XML의 쿼리 응답을 얻었다. 나는 값을 얻지 만 문제는 아래의 출력에 주어진대로 'instant'입니다. 여기에 내 코드입니다 :Python으로 작성된 eXist-db 쿼리의 결과 처리

30.00 
<type 'instance'> 
29.99 
<type 'instance'> 
49.99 
<type 'instance'> 
39.95 
<type 'instance'> 

는 내가 원하는 것은 목록 '결과'에 추가 된 값을 반환하는 것입니다

from eulexistdb import db 
class TestExist: 
    def __init__(self): 
     self.db = db.ExistDB("http://localhost:8899/exist/") 

    def get_res(self,query): 
     #result = list() 
     res = self.db.executeQuery(query) 
     hits = self.db.getHits(res)   
     for i in range(hits): 
      print self.db.retrieve(res,i) 
      print type(self.db.retrieve(res,i)) 
xquery = ''' 
let $x:= doc("/db/sample/books.xml") 
return $x/bookstore/book/price/text()''' 
a = TestExist() 
a.get_res(xquery) 

이제 쿼리가 잘 작동하고 결과로 인쇄 얻을 너무. 유형 변환을 시도했지만 실패했습니다. 이것을 어떻게 성취합니까?

+0

"나는 값을 얻지 만 문제는 있습니다."라고 말합니다. 이 문장을 완성하려면 게시물을 편집하십시오. – joewiz

답변

2

이상한 점이 있습니다. docsdb.retrieve 함수가 문자열을 반환해야한다고 생각하는 것처럼 보이지만 분명히 그렇지 않습니다.

result.append(str(self.db.retrieve(res,i))) 

또는

result.append(repr(self.db.retrieve(res,i))) 

는 그냥 #result = list() 행의 주석을 해제하고,로 위의 중 하나를 추가 : 인쇄 문이 그것에서 유용한 문자열을 가져옵니다 때문에 어떤 경우에는,이 중 하나가 작동합니다 for 루프.

+0

str()에 캐스트가 작동했습니다. 어리석은 I didnt는 그것을 생각했다. 나는 그것에서 float Value를 원했다. 그러나 repr()은 [, '', '', ' 예 : 0x02258620> '] – Pant

+0

대단히 기쁩니다. 문제가 해결되었다고 생각되면 다른 사용자가 답변을 찾았는지 확인하기 위해 "수락"체크 표시를 클릭하면 도움이됩니다. – Brionius

관련 문제