XPath匹配含有指定文本的标签

xpath匹配含有指定文本的标签
对于一般的情况, 就是标签中只包含文字, 这种的比较规范, 如:

<div>
  <ul id="side-menu">
    <li class="active">
      <a href="#">
      电子账户
      a>
      <ul class="nav">
        <li>子菜单1li>
        <li>子菜单2li>
      ul>
    li>
  ul>
div>

现在想取a节点, 可以这样写: //ul[@id='side-menu']/li/a[contains(text(),"电子账户")]

但是如果a节点是这样呢? 电子账户这几个字没有被一个明确的标签包裹:

<div>
  <ul id="side-menu">
    <li class="active">
      <a href="#">
        <i>图标i>
         电子账户
        <span>箭头span>
      a>
      <ul class="nav">
        <li>子菜单1li>
        <li>子菜单2li>
      ul>
    li>
  ul>
div>

此时再用上边的xpath表达式就到不到了.

不过可以借助string(), 将a标签里边的东西全部转换成字符串, 再用contains()判断:
//ul[@id='side-menu']/li/a[contains(string(), '电子账户')]

这样就可以了, 非常实用.

欢迎补充指正!

你可能感兴趣的:(XPath)