Aqui esta la solucion. He utilizado etiquetas que no utilizo por si acaso hay confusiones. Para un articulo mas o menos seria asi:
Código PHP:
<ruby id="IDunico">
<big>El titulo principal</big>
<acronym>Subtitulo pequeño debajo de titulo</acronym>
<bdo>
<p>Esto es todo lo que contendria el articulo.</p>
<p>El texto del interior contiene parrafos, <a href="pagina">enlaces</a> y saltos<br>de linea varios.</p>
</bdo>
</ruby>
<script language="javascript">
<!--
function getArticulo(id) {
elArticulo=document.getElementById(id);
hijos=elArticulo.childNodes;
devolver=new Array();
for(a=0;a<hijos.length;a++) {
etiq=hijos[a].tagName;
if(etiq=="BIG") devolver[0]=hijos[a].innerText;
else if(etiq=="ACRONYM") devolver[1]=hijos[a].innerText;
else devolver[2]=hijos[a].innerHTML;
}
return devolver;
}
alert(getArticulo("IDunico").join("\r\r"));
//-->
</script>
Esta todo como antes, salvo un bucle for que he hecho, porque no se porqué la variable hijos no guarda las referencias a las etiquetas en orden lógico, es decir, el elemento 0 hace referencia a <big>; pero el 1 -> undefined; el 2 -> <acronym>; 3 -> undefined y 4 -> <bdo>, no se si esto sera fijo o no, pero para que funcione siempre, un bucle con comprobaciones y listo.
Espero que a alguien le sirva.