【问题标题】:Help with xPath query帮助 xPath 查询
【发布时间】:2011-01-18 20:32:30
【问题描述】:

我正在使用 HTML 解析器库将网页解析为 XML。对于 XML,我想使用 xPath 查询选择包含彼此所属文本的节点。

这是一个 HTML 示例:

<p><span style="font-family: 'Verdana','sans-serif'; font-size: 32pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="line-height: 115%; font-family: 'Verdana','sans-serif'; font-size: 36pt; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US; mso-ansi-language: SV; mso-bidi-language: AR-SA;">&nbsp;</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VECKA 3</span></span></p><p><span style="font-family: 'Verdana','sans-serif'; font-size: 32pt;"></span><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17-21 JANUARI</span></p>
<p style="margin-bottom: 0pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-family: 'Verdana','sans-serif'; font-size: 11pt; mso-bidi-font-size: 18.0pt;">11.30-14.30</span></p>
<p style="margin-bottom: 0pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; mso-bidi-font-size: 15.0pt;">MÅNDAG:&nbsp;Parmesangratinerad tungafile med paprikasås</span></p>
<p style="margin-bottom: 0pt;"><span style="font-family: 'Verdana','sans-serif'; font-size: 10pt; mso-bidi-font-size: 15.0pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Biffgryta med syltlök &amp; ris</span></p>

在解析的 HTML 上使用 xPath,我想选择包含单词 MÅNDAG 的&lt;span&gt;-node,但也选择属于它的以下&lt;span&gt;-node。例如,我想选择包含以下文本的节点:“MÅNDAG: Parmesangratinerad tungafile med paprikasås”和文本“Biffgryta med syltlök & ris”。

我想我想使用一个看起来像这样的 xPath:

"//span[contains(.,'MÅNDAG') or (contains(.,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;') and ../parent-sibling::/span[contains(.,'MÅNDAG')]]"

有什么想法吗?

【问题讨论】:

    标签: xpath


    【解决方案1】:

    在 XPath 2.0 中:

    //span[contains(.,'MÅNDAG')/(. | following::span[1])
    

    在 XPath 1.0 中:

    //span[contains(.,'MÅNDAG') | //span[contains(.,'MÅNDAG')/following::span[1]
    

    【讨论】:

    • //span[contains(.,'MÅNDAG')] | //span[contains(.,'MÅNDAG')]/following::span[1] 成功了,谢谢!
    【解决方案2】:

    我想选择&lt;span&gt;-node 包含单词MÅNDAG,但也 以下&lt;span&gt;-node 其中 属于它

    没有节点集联合的 XPath 1.0 表达式:

    //span[(.|preceding::span[1])[contains(.,'MÅNDAG')]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 2011-07-19
      • 2011-04-28
      • 2011-02-01
      • 2010-12-24
      相关资源
      最近更新 更多