2010-07-14 2 views
1

WordPress 내보내기 파일을 구문 분석 할 때 feedparser (우수 라이브러리)을 사용하려고합니다. WordPress 버전 간의 불일치로 인해 큰 두통이 생깁니다.Python 피드 파서가 atom/WordPress 네임 스페이스를 사용하고 있지 않습니까?

WordPress 2.x에는 atom:link 태그가 XML 출력에 포함되어 있지 않습니다 (without_atom_tags.xml).

>>> feed = feedparser.parse("without_atom_tags.xml") 
>>> print feed.entries[0].comment_status 
u'open' 
atom:link 태그 ( with_atom_tags.xml를) 워드 프레스 3.x의에서 XML 포함되어 있습니까

, 당신은 네임 스페이스 요소를 앞에해야합니다 : 구문 분석 할 때, 네임 스페이스 요소는 접두사없이 사용할 수있는 흥미로운

>>> feed = feedparser.parse("with_atom_tags.xml") 
>>> feed.entries[0].wp_comment_status    # <-- Note wp_ prefix 
u'open' 
>>> feed.entries[0].comment_status 
AttributeError: object has no attribute 'comment_status' 

루트 RSS 요소 (with_atom_tags_and_namespace.xml)에 xmlns:atom="http://www.w3.org/2005/Atom"을 추가하면 접두사가 필요하지 않습니다.

XML을 수정하지 않고 이러한 모든 형식을 구문 분석해야합니다. 피드 파서가 손상 되었습니까, 아니면 잘못 했습니까? 불쾌한 조건 코드없이이 작업을 수행 할 수 있습니까?

+0

* 업데이트 : * 트렁크 버전의 feedparser를 사용하면 모든 요소가 동일하게 구문 분석됩니다 (*와 * wp_ 접두어). –

답변

0

feedparser.py에서 지원되는 네임 스페이스의 전역 목록에 누락 된 네임 스페이스 (atom/wp)를 직접 추가 할 수 있습니까?

+0

솔루션을 시험해보기 위해 feedparser.py 소스를 다운로드했습니다. 보라, 트렁크의 최신 버전이이 문제를 시정합니다! 모든 속성에는 wp_ 네임 스페이스 접두사가 붙습니다. –

관련 문제