Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Ruby 查找忽略字符串中数字的xpath_Ruby_Regex_Ruby On Rails 3_Xpath - Fatal编程技术网

Ruby 查找忽略字符串中数字的xpath

Ruby 查找忽略字符串中数字的xpath,ruby,regex,ruby-on-rails-3,xpath,Ruby,Regex,Ruby On Rails 3,Xpath,实际的xpath是/*[@id=“location_in_196548881_chzn”],中间的数字是随机生成的。我要搜索此节点 当id为常量时,我对搜索的调用是这样的 find(:xpath,'//*[@id="location_in_196548881"]') 试过了,但没用 //id[contains(text(), 'location_in_')] 在查找此id时,如何忽略中间的数字 HTML代码片段是 <div class='control-group'> <l

实际的xpath是
/*[@id=“location_in_196548881_chzn”]
,中间的数字是随机生成的。我要搜索此节点

当id为常量时,我对搜索的调用是这样的

find(:xpath,'//*[@id="location_in_196548881"]')
试过了,但没用

//id[contains(text(), 'location_in_')]
在查找此id时,如何忽略中间的数字

HTML代码片段是

<div class='control-group'>
<label class='control-label' for='inputLocation'>
Location
</label>
<div class='controls location'>
<select class="span6 first" data-chosen_select="true" data-placeholder="via Location" id="location_in_196548881" name="browse[relation][location_in][]"><option value=""></option>
<optgroup label="Top"><option value="43705">Bangalore</option>
<option value="43767">Chennai</option>

位置
班加罗尔
钦奈

您的思路是正确的,但是如果原始XPath适用于静态数字,那么只需将
@id='
部分替换为您在第二个XPath中尝试的内容,如下所示:

//*[contains(@id,'location_in_')]
如果
id
是一个属性,那么您使用第一个XPath正确地引用了它,这就是为什么您会得到一些东西。在第二次调用中,您将引用它,就像它是一个包含您要查找的文本的节点一样

换句话说,
//id[contains(text(),'location_In_')]
适用于以下情况

<root>
<id>location_in_12345</id>
</root>

提供此查找(:xpath,“/*[contains(@id,“location\u in”]]),但得到的结果是-找不到xpath“/*[contains(@id,\“location\u in””)”)”)“您能发布您要定位的XML片段吗?位置班加罗尔·钦奈(Bangalore ChennaiI)是个新手,不知道如何从中生成xml片段。对于未格式化的输出,非常抱歉。请将XML放入原始问题中,以便对其进行格式化;)
<root>
<node1 id="location_in_1235">text</node1>
<node2 id="location_in_5678">text</node2>
</root>
find(:xpath,'//*[contains(@id,"location_in_")]')