特定のノードの親からテキストを取得しようとしています。例えば:
<td colspan="1" rowspan="1">
<span>
<a class="info" shape="rect"
rel="empLinkData" href="/employee.htm?id=8468524">
Jack Johnson
</a>
</span>
(*)
</td>
以下を使用して、アンカータグを正常に処理できます。
$xNodes = $xpath->query('//a[@class="info"][@rel="empLinkData"]');
// $xNodes contains employee ids and names
foreach ($xNodes as $xNode)
{
$sLinktext = @$xNode->firstChild->data;
$sLinkurl = 'http://www.company.com' . $xNode->getAttribute('href');
if ($sLinktext != '' && $sLinkurl != '')
{
echo '<li><a href="' . $sLinkurl . '">' .
$sLinktext . '</a></li>';
}
}
ここで、タグからテキストを取得する必要があります<td>
(この場合、(*)
span タグが閉じた直後に表示される) が、適切に参照できないようです。
私にとって最も理にかなっていると思われるこれのxpathは次のとおりです。
$xNodes = $xpath->query('//a[@class="info"]
[@rel="empLinkData"]/ancestor::*');
しかし、このコードの上にネストされた他の場所から間違ったデータを取得しています。