Que tal uamero, me llama la atención la manera en que generas la cadena original. Mira, con C# la genero con la siguiente función:
Código:
public string GeneraCadenaOriginal(string nombreArchivo)
{
string cadenaOriginal = "";
string fileXSLT = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "cadenaoriginal_2_0.xslt"); // @"http://www.sat.gob.mx/sitio_internet/cfd/2/cadenaoriginal_2_0/cadenaoriginal_2_0.xslt";
string newFile = System.IO.Path.GetTempFileName();
try
{
XslCompiledTransform xsl = new XslCompiledTransform();
xsl.Load(fileXSLT);
xsl.Transform(nombreArchivo, newFile);
xsl = null;
StreamReader streamReader = new StreamReader(newFile);
cadenaOriginal = streamReader.ReadToEnd();
streamReader.Close();
}
catch (Exception)
{
throw;
}
finally
{
// Eliminamos el archivo
System.IO.File.Delete(newFile);
}
return cadenaOriginal;
}
Traduciendo lo anterior, tanto en los ejemplos de la corona, lo que exige hacienda y otras soluciones para CFD's, la cadena original se obtiene de la transformación de tu archivo XML con un XLST (el que contiene las reglas de transformación) o de la generación manual de ésta. Veo que optaste por la generación manual.
Bueno, la pregunta es ¿de puritita casualidad no has encontrado algo acerca de como transformar el XML en la cadena original utilizando el archivo XSLT para ello?
Por cierto, lo que expones acerca de como el componente TXMLDcument te genera las entidades ya lo comprobé y si que te saca de apurototote.
Aún así me gustaría encontrar la manera de generar la cadena original con una transformación
¿Alguien sabe como hacer esta transformación?
Saludos y excelente trabajo uamero.