text()中的重复选择XPath选择器

时间:2010-01-07 20:51:39

标签: xml vb.net xpath

我正在尝试选择包含某个单词的文本的所有节点(例如:公司),因为该单词需要有一个注册标记。

以下是XHTML的一部分(此<p>位于表格单元格内。)

<p>
  <strong>
    <a style="color:#0E5A8B; text-decoration:none" target="_blank" href="http://www.trekk.com">
      <span class="title">
        A Company Content Title
      </span>
    </a>
    <br />
    <span style="color:#000000">
      February 23, 2010 10:00 A.M. PT<br />
    </span>
  </strong>
  Sample Content<br />
  <a style="color:#000" target="_blank" href="http://www.trekk.com">
    Register now
  </a>
</p>

我将XHTML加载到System.Xml.XmlDocument并尝试使用

选择节点
NewsletterHtmlDoc.SelectNodes("//*[contains(text(),'Company')]")

生成的XmlNodeList包含2个XmlNodes。

    含有InnerText = <p>

  1. A Company Content Title February 23, 2010 10:00 A.M. PT Sample Content Register now 含有InnerText = <span class="title">

  2. A Company Content Title

    我的目标是只选择第二个<span>标记,并且不确定为什么<p>标记也被选中。如果它选择<p>,但为什么不选择<strong><a>,为什么不选择包含{<table><td>的{​​{1}}或<p> 1}}?

1 个答案:

答案 0 :(得分:1)

我明白了。 示例内容文本是<p>元素的InnerText的一部分,并导致找到<p>元素的整个InnerText。将示例内容放在其自己的元素中会从<p>元素中删除任何直接的InnerText并修复问题。

<p>
  <strong>
    <a style="color:#0E5A8B; text-decoration:none" target="_blank" href="http://www.trekk.com">
      <span class="title">
        A Company Content Title
      </span>
    </a>
    <br />
    <span style="color:#000000">
      February 23, 2010 10:00 A.M. PT<br />
    </span>
  </strong>
  <span>
    Sample Content
  </span>
  <br />
  <a style="color:#000" target="_blank" href="http://www.trekk.com">
    Register now
  </a>
</p>