string和contains函數(shù)
>>>treedata = etree.XML('<test><item>Apple <b>hello</b> tree</item><item>Banana</item><item>Orange</item></test>')
>>>treedata.xpath('string(/test)')
'Apple hello treeBananaOrange'
>>> treedata.xpath('contains(//text(), "Banana")')
False
返回值 false。 在此示例中,出現(xiàn)這種情況的原因是,第一個參數(shù)(“//text()”)使用 string(//text()) 轉換為字符串,只會搜索第一個節(jié)點字符串(“Apple”)。 反之,如果 contains() 函數(shù)修改為第一個參數(shù)使用點選擇符(“.”),如下所示:
>>> treedata.xpath('//text()')
['Apple ', 'hello', ' tree', 'Banana', 'Orange']
>>> treedata.xpath('contains(., "Banana")')
True