string和contains函数
>>>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。 在此示例中,出现这种情况的原因是,第一个参数(“//text()”)使用 string(//text()) 转换为字符串,只会搜索第一个节点字符串(“Apple”)。 反之,如果 contains() 函数修改为第一个参数使用点选择符(“.”),如下所示:
>>> treedata.xpath('//text()')
['Apple ', 'hello', ' tree', 'Banana', 'Orange']
>>> treedata.xpath('contains(., "Banana")')
True