Ya que tienes tu estructura definida (tu clase), desde código puedes obtener la referencia para hacer la deserializacion (ejemplo en c# porque no tengo mucho tiempo de pasarlo a vb.net jeje)
puedes exponer un método que reciba un XMlDocument (que contiene tu definicion de archivo xml) y hacer lo siguiente
Ejemplo
Código:
private void WorkXML(XMLDocument xDoc)
{
Books objBook = null;
XmlSerializer slz = new XmlSerializer(typeof(Books));
foreach (XmlNode xNode in xDoc.FirstChild.ChildNodes)
{
try
{
//Serializa el nodo
objBook = slz.Deserialize(new System.IO.StringReader(xNode.OuterXml)) as Books;
//... ya tienes todo en tu objBook
//ejemplo .- objBook.LIBROS
}
catch {}
}
}
Con ello ya todo lo trabajas con objetos definidos y te ahorras leer childs de XML, parents, elements, etc.. ya que todo lo tienes en objetos
Espero haberme dado a entender
Si tengo time te lo paso a vb.net
Cualquier cosa por aqui andamos _(aunque de repente me desaparezco por la carga de trabajo que tengo

)
Saludos