我试图做到这一点(使用lxml的):XPath的:在一个表达式匹配多个元素
//*[@id="32808345" or @id="33771423" or @id="15929470" or @id="33771117" or @id="15929266"]
为了得到所有的元素,无论是什么标签,与指定的ID。我得到以下回溯:
invalid attribute predicate
这是我如何生成STR(如果是相关的问题):
refs = ' or '.join('@id="%s"' % ref for ref in refs[0:5])
elements = etree.iterfind('//*[%s]' % refs)
编辑,与下面的解决方案我得到这个错误:
File "lxml.etree.pyx", line 1201, in lxml.etree._Element.iterchildren (src/lxml/lxml.etree.c:36294)
File "lxml.etree.pyx", line 2163, in lxml.etree.ElementChildIterator.__init__ (src/lxml/lxml.etree.c:45331)
File "lxml.etree.pyx", line 2118, in lxml.etree._ElementTagMatcher._initTagMatch (src/lxml/lxml.etree.c:44913)
File "apihelpers.pxi", line 1413, in lxml.etree._getNsTag (src/lxml/lxml.etree.c:21412)
ValueError: Empty tag name
我不确定python xpath实现需要什么,但xpath在其他语言中适用于我。 – Wrikken 2010-07-24 13:59:34