在下面的函数中,当$ keyword中的string包含双引号时,它会创build一个“Warning:DOMXPath :: evaluate():Invalid expression” : $keyword = 'This is "causing" an error'; $xPath->evaluate('boolean(//img[contains(@alt, "'.$keyword.'")])'); 对于xpathexpression式,我应该怎么做prep $keyword ? 全function代码: $keyword = trim(strtolower(rseo_getKeyword($post))); function sx_function($heading, $post){ $content = $post->post_content; if($content=="" || !class_exists('DOMDocument')) return false; $keyword = trim(strtolower(rseo_getKeyword($post))); @$dom = new DOMDocument; @$dom->loadHTML(strtolower($post->post_content)); $xPath = new DOMXPath(@$dom); switch ($heading) { case "img-alt": return $xPath->evaluate('boolean(//img[contains(@alt, "'.$keyword.'")])'); default: return […]
如果我有XML: <foo> <bar id="1" score="192" /> <bar id="2" score="227" /> <bar id="3" score="105" /> … </foo> 我可以使用XPath来查找score的最小值和最大值吗? 编辑 :我正在使用的工具( Andarielant任务)不支持XPath 2.0解决scheme。
我是json的新手。 我有一个程序来从JSON对象生成XML。 String str = "{'name':'JSON','integer':1,'double':2.0,'boolean':true,'nested':{'id':42},'array':[1,2,3]}"; JSON json = JSONSerializer.toJSON( str ); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setTypeHintsCompatibility( false ); String xml = xmlSerializer.write( json ); System.out.println(xml); 输出是: <?xml version="1.0" encoding="UTF-8"?> <o><array json_class="array"><e json_type="number">1</e><e json_type="number">2</e><e json_type="number">3</e></array><boolean json_type="boolean">true</boolean><double json_type="number">2.0</double><integer json_type="number">1</integer><name json_type="string">JSON</name><nested json_class="object"><id json_type="number">42</id></nested></o> 我最大的问题是如何写我自己的属性,而不是json_type =“数字”,也写我自己的子元素。
我有一个HTML文件(来自Newegg),他们的HTML组织如下。 规格表中的所有数据都是“ desc ”,而每个部分的标题都是“ 名称”。 以下是来自Newegg页面的两个数据示例。 <tr> <td class="name">Brand</td> <td class="desc">Intel</td> </tr> <tr> <td class="name">Series</td> <td class="desc">Core i5</td> </tr> <tr> <td class="name">Cores</td> <td class="desc">4</td> </tr> <tr> <td class="name">Socket</td> <td class="desc">LGA 1156</td> <tr> <td class="name">Brand</td> <td class="desc">AMD</td> </tr> <tr> <td class="name">Series</td> <td class="desc">Phenom II X4</td> </tr> <tr> <td class="name">Cores</td> <td class="desc">4</td> </tr> <tr> <td class="name">Socket</td> <td […]
我试图find一个dynamic的ID名称总是以“注册”结尾的input元素。 到目前为止,我试过这个 "//input[@id[ends-with(.,'register')]]" 和这个 "//input[ends-with(@id,'register')]" 这些都不会导致一个元素。 我究竟做错了什么? 同时这个工作: "//input[@id[contains(.,'register')]]" 以下是源代码的一部分: <td class="input"> <input id="m.f0.menu.f2.volumeTabs.BLOCK_COMMON.tcw.form.register" name="m.f0.menu.f2.volumeTabs.BLOCK_COMMON.tcw.form.register" class="aranea-checkbox" type="checkbox"> </td>
当通过Firebugfind相对的XPath时:它会创build类似的 .//*[@id='Passwd'] ———如果我们在开始的时候不使用点,它表示什么? 只需在Xpath中添加//* – 它突出显示了各种页面元素———-它是什么意思? 以下是Gmail密码字段的XPath。 *意义是什么? .//*[@id='Passwd'] //child::input[@type='password']
我的问题是关于在XPath中使用点和text()细节。 例如,下面的find_element行返回相同的元素: driver.get('http://stackoverflow.com/') driver.find_element_by_xpath('//a[text()="Ask Question"]') driver.find_element_by_xpath('//a[.="Ask Question"]') 那有什么区别? 什么是使用的好处和缺点. 和text() ?
我试图得到一个xpath查询使用xpath函数小写或uppper的情况下,但他们似乎无法在selenium(我在testing我的xpath应用之前)。 不能正常工作的例子://*[.=upper-case('some text')] 我没有问题find我需要的复杂path中的节点,甚至使用聚合函数,只要我不使用大写和小写。 有没有人遇到过这个? 是否有意义? 谢谢。
我正在尝试使用xpath提取dc:title元素。 我可以使用下面的代码拉出元数据。 doc = <<END <?xml version="1.0" encoding="UTF-8"?> <package xmlns="http://www.idpf.org/2007/opf" version="2.0"> <metadata xmlns:dc="URI"> <dc:title>title text</dc:title> </metadata> </package> END doc = Nokogiri::XML(doc) # Awesome this works! puts '//xmlns:metadata' puts doc.xpath('//xmlns:metadata') # => <metadata xmlns:dc="URI"><dc:title>title text</dc:title></metadata> 正如你可以看到上述似乎正常工作。 但是,我似乎没有能够从这个节点树中获得标题信息,所有下面的失败。 puts doc.xpath('//xmlns:metadata/title') # => nil puts doc.xpath('//xmlns:metadata/dc:title') # => ERROR: `evaluate': Undefined namespace prefix puts doc.xpath('//xmlns:dc:title') # => ERROR: […]
我使用以下XPATH Query来列出站点下的对象。 ListObject[@Title='SomeValue'] 。 SomeValue是dynamic的。 只要SomeValue没有撇号('),此查询就可以工作。 尝试使用转义序列也。 没有工作。 我究竟做错了什么?