我正在使用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;"> <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;"> </span> 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;"> 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;"> </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: 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;"> Biffgryta med syltlök & ris</span></p>
在解析的HTML上使用xPath,我想选择包含单词MÅNDAG的<span>
- 节点,以及属于它的以下<span>
节点。例如,我想选择包含文本的节点:“MÅNDAG:Parmesangratinerad tungafilemedpaprikasås”和文本“Biffgrytamedsyltlök&amp; ris”。
我认为我想使用看起来像这样的xPath:
"//span[contains(.,'MÅNDAG') or (contains(.,' ') and ../parent-sibling::/span[contains(.,'MÅNDAG')]]"
有什么想法吗?
答案 0 :(得分:0)
在XPath 2.0中:
//span[contains(.,'MÅNDAG')/(. | following::span[1])
在XPath 1.0中:
//span[contains(.,'MÅNDAG') | //span[contains(.,'MÅNDAG')/following::span[1]
答案 1 :(得分:0)
我想选择
<span>
- 节点 包含单词MÅNDAG
,但也包含 以下<span>
- 节点 属于它
没有节点集联合的XPath 1.0表达式:
//span[(.|preceding::span[1])[contains(.,'MÅNDAG')]]