Finalmente he optado por quitar el XML y sacarlo todo directamente de MySQL y resulta todo muuuuucho mas fácil, el codigo queda así:
Código PHP:
<?php
header("Content-type: text/html");
//clase que uso para mySQL, si no tenéis ninguna usad los comandos "normales" y no los que uso yo
include ("clasedb.php");
//conexión
$host = "localhost";
$user = "usuario";
$pass = "password";
$database = "nombre_bdd";
$obj = new db($host, $user, $pass, $database);
//definicion de variables de paginación
$TAMAÑO_PAGINA = 5;
$pagina = $_GET["pagina"];
if (!$pagina) {
$inici = 0;
$pagina = 1;
} else {
$inicio = ($pagina - 1) * $TAMAÑO_PAGINA;
}
$total = $obj->query("select * from noticias");
$resultado = $obj->query("select * from noticias limit " . $inicio . "," . $MIDA_PAGINA);
$num_total_registros = $obj->num_rows($total);
//calculo el total de páginas
$total_paginas = ceil($num_total_registros / $MIDA_PAGINA);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
....
</head>
<body>
<?php
while ($fila = $obj->fetch_array($resultado)) {
echo "<h1 class='noticia'>" . $fila['tituloNot'] . "</h1>";
echo "<h3>" . $fila['urlNot'] . "</h3>";
echo "<br/><p class='noticia'>" . $fila['textNot'] . "</p></div>";
echo "<br/>";
}
if ($total_paginas > 1) {
echo "<div id='pagi'>";
if ($pagina != 1) {
echo "<a href='index.php?pagina=1'><<</a> ";
$pagaux=$pagina-1;
echo "<a href='index.php?pagina=" . $pagaux . "'><</a> ";
}
for ($i = 1; $i <= $total_paginas; $i++) {
if ($pagina == $i)
echo $pagina . " ";
else
echo "<a href='index.php?pagina=" . $i . "'>" . $i . "</a> ";
}
if ($pagina != $total_paginas) {
$pagaux=$pagina+1;
echo "<a href='index.php?pagina=" . $pagaux . "'> > </a>";
echo "<a href='index.php?pagina=" . $total_paginas . "'>>></a>";
}
}
mysql_free_result($rs);
$obj->close();
?>
</div>
</div>
</body>
</html>
El código de la paginacion lo he sacado del link de "igualacero". Gracias!