Un esempio con semplici funzioni
codice:
function nextSibling(nodo){
	do{
		nodo = nodo.nextSibling;
	}while(nodo == "[object Text]");
	
	return nodo;
}

function childNodes(nodo,i){
	nodo = nodo.childNodes;
	nodi = new Array();
	
	for(x=0;x<=nodo.length;x++){
		if(nodo[x] != "[object Text]")nodi.push(nodo[x])
	}
	
	return nodi[i];
}

node = document.getElementById('id');
node = node.parentNode.parentNode;
node = nextSibling(node);
node = childNodes(node,0);
Invece di utilizzare le funzioni volevo creare una sorta di nodo personalizzato quindi per esempio

codice:
node = node.parentNode.parentNode.next.child[0];
next e child sono nodi inventati che emulano il nextSibling e childNodes ma omettono l'oggeto testo. Spero di essermi spiegato