Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath:如何基于文本而非值属性选择选项?_Xpath - Fatal编程技术网

Xpath:如何基于文本而非值属性选择选项?

Xpath:如何基于文本而非值属性选择选项?,xpath,Xpath,考虑两种类型: <select name="garden"> <option>Flowers</option> <option selected="selected">Shrubs</option> <option>Trees</option> <option selected="selected">Bushes</option> <optio

考虑两种类型:

<select name="garden">
    <option>Flowers</option>
    <option selected="selected">Shrubs</option>
    <option>Trees</option>
    <option selected="selected">Bushes</option>
    <option>Grass</option>
    <option>Dirt</option>
</select>
对于上述情况,Xpath是否自动忽略空格?应该修剪吗

编辑:


对于选择多个选项,这是否足够

select/option[normalize-space(text())="Grass" or normalize-space(text())="Trees"]

如果空白不是问题:

/select/option[.='Grass']
不过,我需要重新检查空格。您始终可以正常化:

/select/option[normalize-space(.)='Grass']

要按文本值选择,可以使用
text()
函数。并且需要规范化空间,因为默认情况下不会删除它们。以下是一个例子:

select/option[normalize-space(text())="Grass"]
@value
-值属性的值

@val
“val”属性的值


-函数返回参数字符串,其中包含通过剥离前导和尾随空格并用单个空格替换空格字符序列来规范化的空格

,以选择多个选项是否足够?选择/option[normalize space(text())=“Grass”或normalize space(text())=“Trees”]可以,只是
text()
不是函数。这是一个节点测试。Marc的答案更简短,对于XPath来说更惯用。顺便说一句,应该如何调用
text()
(如果它不是函数)?对于选择多个选项,这就足够了吗?选择/选项[normalize space(.)=“Grass”或normalize space(.)=“Trees”]这似乎区分大小写。有没有别的办法?@Timur:
select/option[normalize-space(text())="Grass"]