2011-09-14 4 views
1

ODF 파일 내에서 content.xml을 구문 분석하려고합니다. 나는 파일을 문자열로 읽었고 lxml.etree를 사용하여 트리 객체를 얻었습니다. lxml을 사용하여 파이썬에서 ODF 구문 분석

tree = etree.XML(string)

이제는 텍스트 인 모든 하위 요소 (OR 텍스트 : h)를 찾아야합니다. 이전 질문에서 XPath를 사용할 수 있다고 들었습니다. 나는 시도했지만 매번 붙어있어. 그 중 하나를 찾을 수조차 없습니다.

는 내가하려고하면 :

elem = tree.xpath('//text:p')
난 그냥 어떻게 그래서 그들을 반복 할 수있는 올바른 순서 thoose 하위 요소의 모두 목록을받을 수 있나요 그래서
XPathEvalError: Undefined namespace prefix

를 얻을?

답변

1

textODF schema에 정의 된 이름 공간 약어이기 때문입니다. 시도해보십시오.

tree.xpath('//text:a | //text:h', 
      namespaces={'text': 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'}) 

|은 집합 조합 연산자입니다. LXML docs도 참조하십시오.

+0

좋아요! Thnx. 이제 어떻게 거기에 OR 문을 가져와서 p와 text : h라는 두 텍스트를 가져 오겠습니까? –

+0

아, 잊어 버렸습니다. 지금 답변에 추가되었습니다. –

+0

난 그냥 구글 "xpath 연산자"로 그것을 발견 할 수 있습니다. 노력하지 않아서 미안해. 하지만 어제 밤 정말 실망했습니다. 어쨌든 고마워요! :) –