如何使用XPath 1.0查找子字符串

时间:2018-07-09 14:19:59

标签: xml xpath sonarqube xpath-1.0

我在尝试在XPATH 1.0中查找特定子字符串时遇到麻烦。此表达式将在代码查看工具 SonarQube 中用于设置约束。

这是我当前在XPATH 3.0中使用的表达式,并且我已经进行了一些研究以查找转换,但是该表达式的语法在XPATH 3.0中和在1.0中一样是正确的。我是忽略了某件事还是只是误导了

//*[contains(.,'@example.com')]

据我了解,这使用XPATH 1.0固有的 contains()函数在包含属性/descendant-or-self::node()/的任何example.com路径之前搜索路径<form method="post" id="activeinactive" action="activeInactive.php" onsubmit="return ConfirmActiveInactive()"> <?php if($no_of_users>1){ echo ' <table class="paginated table table-striped table-hover"> <thead> <tr> <th>Active</th> <th>Username</th> <th>Email</th> <th>Address</th> <th>Phone</th> <th></th> </tr> </thead> <tbody>'; while($userdetails = mysqli_fetch_array($user_details, MYSQLI_ASSOC)){ echo '<tr id="disableuser">'; echo '<td> <span class="custom-checkbox">'; if($userdetails['is_active']==true){ echo '<input type="checkbox" name="options[]" value="'.$userdetails['member_id'].'" checked=checked disabled> <label></label>'; } echo '</span> </td>'; echo '<td>'.$userdetails['username'].'</td> <td>'.$userdetails['email'].'</td> <td>'.$userdetails['address'].'</td> <td>'.$userdetails['phone'].'</td> <td> <a href="" class="edit" data-toggle="modal" class="not-active"><i class="material-icons" data-toggle="tooltip" title="Edit">&#xE254;</i></a> <a href="" class="delete" name="delete" data-toggle="modal" Onclick="return ConfirmDelete()"><i class="material-icons" data-toggle="tooltip" title="Delete">&#xE872;</i></a> </td> </tr>'; } echo '</tbody> </table>'; } ?> </form>

1 个答案:

答案 0 :(得分:1)

//*[contains(.,'@example.com')]表示“查找具有文本内容的任何类型的节点,其中包含子字符串'@ example.com'。如果要“找到具有属性且其值包含'@ example.com'的节点” ,则需要:

  • 任意属性中的

    //*[contains(@*, "@example.com")]
    
  • 特定属性中:

    //*[contains(@email, "@example.com")]
    

如果您想获得必需的@attribute的价值:

//*[contains(@email, "@example.com")]/@email