// La estrategia es la siguiente: solucionamos los <input type="file"> visibles
// a trav�s de cambios en el DOM, serializamos y si siguen existiendo
// <input type="file"> pues reharemos el DOM a partir de la cadena y haremos
// lo mismo de nuevo, tarea mucho m�s lenta obviamente.
ItsNatStfulDocumentImpl itsNatDoc = getItsNatStfulDocument();
Document doc = itsNatDoc.getDocument();
Map<Element,Attr> attributes = processTreeInputFileElements(doc);
String docMarkup = super.serializeDocument();
if (attributes != null)
restoreAttributes(attributes);
// Ahora procesamos los <input type="file"> que estuvieran en nodos cacheados
// Intentamos evitar un costoso parseado si no hay ningun <input type="file">
if (docMarkup.indexOf(" type=\"file\"") == -1) // type="file" es la forma est�ndar en la que se serializa via DOM este atributo. Si un <input> no tiene "type" el valor por defecto es "text" no "file"
return docMarkup; // No hay ning�n <input type="file">
Document docTmp = itsNatDoc.parseDocument(docMarkup);
// No es necesario normalizar ya fue normalizado el documento original que dio lugar a la cadena
attributes = processTreeInputFileElements(docTmp);
// Como el documento temporal se pierde no es necesario restaurar nada
// Para serializar de nuevo no es necesario resolver nodos cacheados
if (attributes != null) // Hemos cambiado algo
{
docMarkup = itsNatDoc.serializeDocument(docTmp,false);
// NO es necesario restaurar el DOM pues es un documento temporal
}
return docMarkup;
}