【问题标题】:Concat nodes on XpathXpath 上的连接节点
【发布时间】:2013-02-27 07:03:50
【问题描述】:

我有以下html:

<td>

  <h1>Headline</h1><br>
  <strong>Subheadline</strong><br>

  Text1<br>
  Text2

  <h2>Subheadline2</h2>
  <div>stuff</div>
  <div>more stuff!</div>

</td>

我正在尝试抓取“Text1”和“Text2”。
在尝试了 Xpath(使用 php 的DOMXPath)之后,我已经
发现 "td/text()[2]" 匹配 Text1
并且 "td/text()[3]" 匹配 Text2
我想以某种方式使用 Xpath 连接它们,这可能吗?

我似乎在任何地方都找不到合适的文档。
W3schools 有一些例子,但这还不够。

【问题讨论】:

    标签: php xpath domxpath


    【解决方案1】:

    我相信 concat() 函数可以完成您想做的事情。像concat(/td/text()[2], /td/text()[3]) 这样的东西应该可以工作。

    我清理了您的 HTML(制作了所有
    标签
    )并且能够使用 OxygenXML 中的 concat 函数来完成。

    【讨论】:

    • 遗憾的是我无法控制 HTML(它就是这样),而且我不确定 OxygenXML 是否像 DOMXpath 查询一样工作。
    • OxygenXML 的解析器肯定不像 PHP 的 DOMDocument 解析器那样工作,但没关系。重要的是 concat 函数应该在两个地方都能正常工作!
    • 我得到一个空的 DOMNodeList,尽管 /td/text()[2] 和 /td/text()[3] 分别给出了内容。
    • DOMXPath::query() 仅返回 DOMNodeList 对象。你想要一个字符串。 DOMXPath::evaluate() 是您所需要的。我建议您阅读 php.net 上的 DOMXPath 文档 :)。还要查看DOMDocument 的文档,因为它非常有用。
    • 这很好用,我也切换到评估所有其他查询
    【解决方案2】:

    似乎可行,但尚未测试。
    来自 W3 文档 - http://www.w3schools.com/xpath/xpath_functions.asp

    fn:concat(string,string,...) 
    

    返回字符串的串联

    示例:concat('XPath ','is ','FUN!')
    结果:'XPath is FUN!'

    【讨论】:

    • w3schools 不是 W3 文档,它们与 W3C 没有任何关联。 XPATH W3 文档:w3.org/TR/xpath w3schools 的好读物:w3fools.com
    • 来自 w3 文档:函数:string concat(string, string, string*) concat 函数返回其参数的串联。不一样吗?我使用 w3schools 作为基本参考,我仍然对那里发布的任何内容没有任何问题。我不喜欢 w3.org 中列出的信息方式 - 太多的文字 = 错过太多时间来获取信息。不过,在学习目的上,它是好的
    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2014-01-05
    相关资源
    最近更新 更多