xpath를 사용하여 Python의 libxml2로 XML 컨텐트를 파싱하려면, this example과 that tutorial을 따릅니다.Python : libxml2 xpath는 빈리스트를 반환합니다.
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://purl.org/atom/ns#" version="0.3">
<title>Gmail - Inbox for [email protected]</title>
<tagline>New messages in your Gmail Inbox</tagline>
<fullcount>1</fullcount>
<link rel="alternate" href="http://mail.google.com/mail" type="text/html"/>
<modified>2011-05-04T18:56:19Z</modified>
</feed>
이 XML은 "원자"라는 파일에 저장되고, 나는 다음과 같은 시도 : XML 파일은 당신이 빈 목록을 반환 볼 수 있듯이 이제
>>> import libxml2
>>> myfile = open('/pathtomyfile/atom', 'r').read()
>>> xmldata = libxml2.parseDoc('myfile')
>>> data.xpathEval('/fullcount')
[]
>>>
. xpath를 제공 할 수있을지라도 빈 목록을 반환합니다. 이제
>>>> data.xpathEval('//*')
[<xmlNode (feed) object at 0xb73862cc>, <xmlNode (title) object at 0xb738650c>, <xmlNode (tagline) object at 0xb73865ec>, <xmlNode (fullcount) object at 0xb738660c>, <xmlNode (link) object at 0xb738662c>, <xmlNode (modified) object at 0xb738664c>]
내가 XPath는이 "fullcount"노드를 찾거나하지 않는 이유 위의 작동 예에서 판단, 이해가 안 : 내가 *
와일드 카드를 사용할 경우, 나는 모든 노드의 목록을 어떤 다른 : 나는 결국 같은 구문을 사용하고 있습니다 ...
어떤 생각이나 제안? 감사. 첫째
왜 lxml을 사용하지 않습니까? –
그리고 왜해야합니까? :) 나는 지금 lxml 의사를보고 있습니다. 감사. – Benjamin
그것은 libxml2에 대한 바인딩입니다. 대체 바인딩이 있음을 알지 못했지만, lxml은 매우 직관적입니다. –