【问题标题】:xpath cannot get attribute valuexpath 无法获取属性值
【发布时间】:2012-08-26 16:04:19
【问题描述】:

htmo 代码是这样的:

  <a href="javascript:my_win('.......'">
<img src="...." border=0>
<font color="red">title
</a>
</font>

我只想为那些href包含第一个单词的a识别颜色:

javascript:my_win

这是我的查询:

$xpath->query('//a[contains(@href,"javascript:my_win")]/font');

但我什么也得不到。

如果我的查询变成了这个,我通常会得到所有的href,所以不会有拼写错误的机会。

$elements = $xpath->query('//a');

如果我的查询更改为此 Every colot 正在打印出来。

$elements = $xpath->query('//a/font');

完整代码在这里:

$elements = $xpath->query('//a[contains(@href,"javascript:my_win")]/font');

foreach ( $elements as $element ) {

$str1=$element->getAttribute('color');

}

【问题讨论】:

  • 您的代码包含语法错误,请查看上面突出显示的地方。
  • @ghostrider salathe 表示您的报价不匹配。应该是$xpath-&gt;query('//a[contains(href,"javascript:my_win('http://www2.mysite.gr/test/form?')]/font"); 而不是$xpath-&gt;query('//a[contains(href,"javascript:my_win('http://www2.mysite.gr/test/form?")]/font');
  • 您的代码中存在引用不匹配的问题。您以" 开头,但以' 结尾。
  • 请查看编辑,因为我放入的任何内容都无法播放

标签: php xpath


【解决方案1】:

使用@ 字符来引用XPath 中的属性:

//a[contains(@href, 'some required text')]

当只写href 时,XPath 处理器将查找名为&lt;href&gt; 的子元素,其文本内容包含指定的字符串。

【讨论】:

  • @ghostrider:请您用格式正确的 XHTML 代码相关片段更新您的问题,好吗?
  • @ghostrider:这不是格式良好的 XHTML。我很惊讶你得到了//a//a/font 的任何结果。
  • 这不是我写的代码。它来自我想获取数据的网站。这个html有解决办法吗?
  • @ghostrider:通常 XPath 只适用于格式良好的 Xml(例如 XHTML)。我只能猜测 PHP 的 XPath 处理器正在尽其所能地利用 HTML 代码,因此表现不如预期。请查看thisthis 等问题,了解可能的解决方案。
猜你喜欢
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多