我在使用XPath创建INSERT语句时遇到了问题。这里是我的表:XPath。确定刮表的行
<table>
<tr>
<td class="messagecellbody">row1 cell1</td>
<td class="messagecellbody">row1 cell2</td>
<td class="messagecellbody">row1 cell3</td>
</tr>
<tr>
<td class="messagecellbody">row2 cell1</td>
<td class="messagecellbody">row2 cell2</td>
<td class="messagecellbody">row2 cell3</td>
</tr>
</table>
和输出在理想情况下是这样的:
INSERT INTO database_table(列1,列2,栏3)VALUES( 'ROW1小区1', 'ROW1小区2', 'ROW1小区3' ); INSERT INTO database_table(column1,column2,column3)VALUES('row2 cell1','row2 cell2','row2 cell3');
我使用的代码是这样的:
$my_xpath_query = "//table//td[contains(@class, 'messagecellbody')]";
$result_rows = $xpath->query($my_xpath_query);
foreach ($result_rows as $result_object) {
echo "'" . $result_object->nodeValue . "'";
}
此正确地找到的每个,但输出是所有6个细胞的细胞内容物。我不知道如何在每一行上打破它(所以我可以回声'INSERT INTO database_table'等)。
如果我插入一个额外的参数,我可以按列号过滤它,例如,以下将给我第一列
$my_xpath_query = "//table//td[contains(@class, 'messagecellbody')][1]";
但问题仍然不知道何时行和另一个开始。没有这个,很难创建我的INSERT语句。
当然!去tr水平而不是td。我能够在页面上选择正确的表格,然后使用$ my_xpath_query =“// table [contains(@class,'bbstable')] // tr [position()]来排除我不需要的前两行。 > 2]“;谢谢! – user3456740