我有一个小问题,Xpath包含dom4j ...
让我们说我的XML是
<Home>
<Addr>
<Street>ABC</Street>
<Number>5</Number>
<Comment>BLAH BLAH BLAH <br/><br/>ABC</Comment>
</Addr>
</Home>
Run Code Online (Sandbox Code Playgroud)
假设我想在给定根元素的文本中找到所有具有ABC的节点...
所以我需要写的xpath就是
//*[contains(text(),'ABC')]
然而,这不是Dom4j返回的......这是dom4j问题还是我理解xpath如何工作.因为该查询仅返回Street元素而不返回Comment元素.
DOM使Comment元素成为具有四个标记2的复合元素
[Text = 'XYZ'][BR][BR][Text = 'ABC']
Run Code Online (Sandbox Code Playgroud)
我会假设查询应该仍然返回元素,因为它应该找到元素并运行包含但它不会......
以下查询返回元素,但它返回的远远多于元素,它还返回父元素...这对问题是不可取的...
//*[contains(text(),'ABC')]
Run Code Online (Sandbox Code Playgroud)
是否有任何人知道XPath查询会只返回元素<Street/>和<Comment/>?
我正在尝试学习xpath.我查看了这里的其他contains()示例,但没有使用AND运算符.我不能让这个工作:
//ul[@class='featureList' and contains(li, 'Model')]
Run Code Online (Sandbox Code Playgroud)
上:
...
<ul class="featureList">
<li><b>Type:</b> Clip Fan</li><li><b>Feature:</b> Air Moved: 65 ft.
Amps: 1.1
Clip: Grips any surface up to 1.63"
Plug: 3 prong grounded plug on heavy duty model
Usage: Garage, Workshop, Dorm, Work-out room, Deck, Office & more.</li><li><b>Speed Setting:</b> 2 speeds</li><li><b>Color:</b> Black</li><li><b>Power Consumption:</b> 62 W</li><li><b>Height:</b> 14.5"</li><li><b>Width:</b> Grill Diameter: 9.5"</li><li><b>Length:</b> 11.5"</li>
<li><b>Model #: </b>CR1-0081-06</li>
<li><b>Item #: </b>N82E16896817007</li>
<li><b>Return Policy: </b></li>
</ul>
...
Run Code Online (Sandbox Code Playgroud) 我的问题是关于使用dot和text()in的具体细节XPath.例如,以下find_element行返回相同的元素:
driver.get('http://stackoverflow.com/')
driver.find_element_by_xpath('//a[text()="Ask Question"]')
driver.find_element_by_xpath('//a[.="Ask Question"]')
Run Code Online (Sandbox Code Playgroud)
那么区别是什么呢?使用.和有text()什么好处和缺点?
我有一个节点如下:
<span class="portal-text-medium">Office Hours</span>
Run Code Online (Sandbox Code Playgroud)
对于我使用的XPath
//span[text()='Office Hours']
Run Code Online (Sandbox Code Playgroud)
这应该工作,但它永远不会.我可以使用*contains(text(),'Office Hours')]*但是找不到完全匹配,我必须验证没有"*".这不是它唯一不适合我的时间.我之前看到它有用,所以我不知道出了什么问题.任何的想法?
是的,我可以,并且确实使用,starts-with但它并不完全相同.
假设我们有一个HTML表格,基本上是这样的:
2|1|28|9|
3|8|5|10|
18|9|8|0|
Run Code Online (Sandbox Code Playgroud)
我想选择仅包含8个单元格的单元格,即,第2行的第2个单元格和第3行的第3个单元格。
这是我尝试过的://table//td[contains(.,'8')]。它给了我所有包含8的单元格。因此,我也得到了不必要的值28和18。
我该如何解决?
编辑:这是一个示例表,如果您想尝试您的xpath。使用左侧的日历-https : //sfbay.craigslist.org/sfc/