Я не могу понять, где я ошибаюсь, используя мою логику xpath.
Здесь приведен фрагмент большего XML-файла, над которым я работаю над трансверсом.(обратите внимание, что я использую Html Agility Pack)
<div>
<div></div>
<span class="pp-headline-item pp-headline-phone">
<span class="telephone" dir="ltr">
<nobr>(732) 562-1312</nobr>
<span class="pp-headline-phone-label" style="display:none">()</span>
</span>‎
</span>
<span> · </span>
<span class="pp-headline-item pp-headline-authority-page">
<span>
<a href="http://maps.google.com/local_url?q=http://www.fed.com/q=07746+pizza">
<span>fed.com</span>
</a>
</span>
</span>
</div>
Моя цель состоит в том, чтобы извлечь различные точки данных из этих фрагментов XML, которые я получаю из основного XML-файла, используя
.SelectNodes("//div/span['pp-headline-item pp-headline-phone']/../..")
с этим я ожидаю получить все разделы, описанные выше, так что я могу перебирать их и извлекать такие вещи, как веб-сайт, телефон, адрес ...
проблема в том, что когда я перебираю этот набор узлов, я не могу добраться до данныхточки, которые я хочу, как если бы набор узлов не был описан сверху.
Моя логика состоит в том, чтобы извлечь набор узлов из самого верхнего элемента div в набор узлов и при итерации их в xpath в нужные мне точки данных.
я делаю это так:
foreach (HtmlNode n in BuizRowsgoogMaps)
{
//get phone number
if (n.SelectSingleNode("span/nobr").InnerHtml != null)
{
strPhone = n.SelectSingleNode("span/nobr").InnerHtml;
//get phone site
strSite = n.SelectSingleNode("//span['pp-headline-item pp-headline-authority-page']/span/a/span").InnerHtml;
}
}
я подозреваю, что мои xpaths не мешаются вместе, чтобы получить то, что я хочу, но когда я проверяю свое выражение, я получаю желаемые результаты ... я использовал эточтобы подтвердить мое мышление, и это работает, оставляя меня в конце концов:
//div/span['pp-headline-item pp-headline-phone']/../../span['pp-headline-item pp-headline-phone']/span/nobr