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)這種情況的原因是耐量,第一個(gè)參數(shù)(“//text()”)使用 string(//text()) 轉(zhuǎn)換為字符串,只會(huì)搜索第一個(gè)節(jié)點(diǎn)字符串(“Apple”)滤港。 反之廊蜒,如果 contains() 函數(shù)修改為第一個(gè)參數(shù)使用點(diǎn)選擇符(“.”),如下所示:
>>> treedata.xpath('//text()')
['Apple ', 'hello', ' tree', 'Banana', 'Orange']
>>> treedata.xpath('contains(., "Banana")')
True