私はそれをこのようにやっています:
$dom = new DOMDocument;
$dom->loadHTMLFile("test.html");
//$books = $dom->getElementsByTagName('body');
$i = 0;
while (is_object($finance = $dom->getElementsByTagName("body")->item($i))) {
foreach ($finance->childNodes as $nodename) {
if ($nodename->childNodes) {
foreach ($nodename->childNodes as $subNodes) {
if ($subNodes->childNodes) {
foreach ($subNodes->childNodes as $potha){
echo $potha->nodeName . " - " . $potha->nodeValue . "<br>";
}
} else {
echo $subNodes->nodeName . " - " . $subNodes->nodeValue . "<br>";
}
}
} else {
echo $nodename->nodeName . " - " . $nodename->nodeValue . "<br>";
}
}
$i++;
}
しかし、どうすれば再帰的にできるので、subChildがあるたびに、各子、サブ子、サブ子などをループする必要があります。それ以外の場合は、ノードの名前と値をエコーします。
また、bodyまたはhtmlに対する各ノードの位置を取得して、各セグメント間に違いがあるようにするにはどうすればよいですか。