我正在尝试选择包含某个单词的文本的所有节点(例如:公司),因为该单词需要有一个注册标记。
以下是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。
<p>
的 A Company Content Title February 23, 2010 10:00 A.M. PT Sample Content Register now
含有InnerText = <span class="title">
A Company Content Title
醇>
我的目标是只选择第二个<span>
标记,并且不确定为什么<p>
标记也被选中。如果它选择<p>
,但为什么不选择<strong>
或<a>
,为什么不选择包含{<table>
或<td>
的{{1}}或<p>
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>