我有一张桌子,我试图刮去看起来像这样:
<table id="thisTable">
<tr>
<td class="value1"></td>
<td class="value2"></td>
<td class="value3"></td>
<td class="value4"></td>
</tr>
<tr>
<td class="value5"></td>
<td class="value6"></td>
</tr>
</table>
和我的DOMXPath看起来像这样(到目前为止):
$htmlDoc = new DomDocument();
@$htmlDoc->loadhtml($html);
$xpath = new DOMXPath($htmlDoc);
$nodelist = $xpath->query('//*[@id="thisTable"]');
foreach ($nodelist as $n){
echo $n->nodeValue."\n";
}
这有效,我得到了表的值,但是如何指定nodeValue的类?最终,我的目标是从td
的{{1}},value2
和value4
内容构建一个新表格。
答案 0 :(得分:1)
$htmlDoc = new DomDocument();
$htmlDoc->loadHTML($html);
$xpath = new DOMXPath($htmlDoc);
$nodelist = $xpath->query('//td');
foreach ($nodelist as $n){
echo $n->getAttribute("class")."\n";
}
注意:使用getAttribute属性获取类
的值答案 1 :(得分:0)
展开你的xpath-query:
$class="value1";
$nodelist = $xpath->query('//*[@id="thisTable"][@class="$class"]');
答案 2 :(得分:0)
不确定我是否理解正确,如果您希望将value2,value4和value5的文本内容放在一行中,则可以使用此xpath:
(//td[@class='value2'] | //td[@class='value4'] | //td[@class='value5'])/text()
例如:
<table id="thisTable">
<tr>
<td class="value1"> 1111</td>
<td class="value2"> 222 </td>
<td class="value3">333 </td>
<td class="value4"> 444</td>
</tr>
<tr>
<td class="value5"> 555</td>
<td class="value6"> 666</td>
</tr>
</table>
输出将为:222 444 555