двойной выбор в тексте () XPath селектор - PullRequest
1 голос
/ 07 января 2010

Я пытаюсь выбрать все узлы с текстом, который содержит определенное слово (например, Company), потому что слово должно иметь регистрационную метку.

Вот часть 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.

  1. <p> с InnerText = A Company Content Title February 23, 2010 10:00 A.M. PT Sample Content Register now

  2. <span class="title"> с InnerText = A Company Content Title

Моя цель - просто выбрать второй тег <span>, и я не уверен, почему также выбирается тег <p>. Если он выбирает <p>, но почему бы не выбрать <strong> или <a>, и почему бы не <table> или <td>, которые содержат <p>?

1 Ответ

1 голос
/ 08 января 2010

Я понял это. Текст Sample Content был частью InnerText элемента <p> и вызвал поиск всего InnerText элемента <p>. Помещение образца содержимого в его собственный элемент удалило любой непосредственный InnerText из элемента <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>
  <span>
    Sample Content
  </span>
  <br />
  <a style="color:#000" target="_blank" href="http://www.trekk.com">
    Register now
  </a>
</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...