【问题标题】:xpath - find multiple sequencial occurences of an elementxpath - 查找元素的多个连续出现
【发布时间】:2011-04-12 09:27:36
【问题描述】:

我有一个需要清理的 xhtml 节点,其内部文本如下:

<img style="width: 402px; height: 312px;" src="http://www.mydomain.com/test.jpg" align="left" border="0" height="312" hspace="5" vspace="5" width="402"> <br><font size="1" face="Arial"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><font face="Verdana">Image text goes here</font> </font>

我自己无法弄清楚返回 / 找到多次出现的 <br> 元素的 xpath 表达式。我需要在节点中进行递归并检查最后一次匹配吗?

更新:我正在使用 HtmlAgilityPack 浏览文档。

提前致谢!

问候, byte_slave

【问题讨论】:

  • 您希望将该代码转换成什么?

标签: c# xhtml xpath html-agility-pack


【解决方案1】:

不太确定你想用这个做什么。我已经问过你希望它转换成什么作为问题的评论......

猜你可能想做什么......

要找出<br/> 元素的总数,只需使用XPath count(//descendant-or-self::br)

或者,如果您想对位于另一个 <br/> 旁边的所有 <br/> 元素做某事,您可以使用 XPath //descendant-or-self::br[following-sibling::br or preceding-sibling::br] 来返回 <br/>s 的长列表

【讨论】:

  • 太棒了!这就是我需要的!谢谢andyb
【解决方案2】:

XPath 不能工作,因为这是 NOT XHTML。所有 br 标签都是未闭合的。哎呀,连img标签本身都不完整……

您需要使用纯文本处理(可能是正则表达式)或 HTML 清理程序来清理它。看看

xmllint

HTML tidy

【讨论】:

  • 我正在使用 HtmlAgilityPack,抱歉忘记在问题中包含这一点。它现在更新了。有了 with i 可以成功使用 xpath,我只是不知道用什么表达式来实现我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多