DomElement オブジェクトをトラバースするためのより適切な/より良い方法はありますか?
特に、値 4、5、および 6 を取得しようとしているときに、ノードを取得するより良い方法があるに違いないと考えてい->nextSibling->nextSibling->nextSibling->nextSibling
ます...? 必要な兄弟を指定できる方法はありますか?
public function fire()
{
$url = "http://test.com";
$html = $this->downloadPage($url);
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$myXpath = $xpath->query('//*[@id="test_table"]');
if (!is_null($myXpath))
{
$domElement = $myXpath->item(0);
$parent = $domElement->firstChild->nextSibling->nextSibling->firstChild->nextSibling;
$value1 = $parent->nodeValue;
$value2 = $parent->nextSibling->nodeValue;
$value3 = $parent->nextSibling->nextSibling->nodeValue;
$this->info("Value 1: " . $value1);
$this->info("Value 2: " . $value2);
$this->info("Value 3: " . $value3);
}
else {
$this->info("Error");
}
}
テーブルには次の構造があります
<table id="test_table">
<tr>
<td width="40"></td> // Dont Want
<td width="55"></td> // Dont Want
<td width="55"></td> // Dont Want
<td width="55"></td> // Dont Want
</tr>
<!--A comment--> // Dont Want
<tr>
<td>AM</td>
<td class="pricing">aaa</td> // Value1
<td class="pricing">bbb</td> // Value2
<td class="pricing">ccc</td> // Value3
</tr>
<tr>
<td>PM</td>
<td class="pricing">ddd</td> // Value4
<td class="pricing">eee</td> // Value5
<td class="pricing">fff</td> // Value6
</tr>
<!--Updated 10:31 18/10/2013--> // I want this date comment
<tr>
<td> </td> // Dont Want
<td colspan="3" align="right"></td> // Dont Want
</tr>
</table>