Depurar XML ya generado y sellado.
Publicado: Lun Ene 17, 2011 11:41 am
Buen día DADO.
Estoy analizando el código de la addenda para Soriana, ya he logrado añadirla y enviarla al servidor de prueba. (Todavia es un borrador mi aplicación y esta 99% basada en tu codigo fuente).
Ahora bien, al proveedor al que le compramos el generador de CFDs ha vuelto a meter las p@titas y debido al pendiente que tiene con nosotros de añadir las addendas, metio una corrección que le deja basura a todos mis CFDs (incluso si no necesitan addenda) en el area del schema:
Debido a esto, despues de añadir la addenda (soriana), tengo que abrir el XML y borrar la basura que esta en xmlns. Pero yo quiero que el usuario que va a añadir la addenda no tenga que meterse con el archivo xml manualmente (imaginate el daño!). Total estoy esperando que me corrijan la aplicacion, pero ya se estan tardando dias con algo tan simple y tengo cientos de documentos en espera de ser generados.
Total, mi intencion es limpiar la referencia del schema, y no logro determinar que usar, a como veo el codigo, una vez generado el CFD ya es de solo lectura y no puedo "tocar" nada extra excepto la addenda... (ojala este equivocado).
Intente atacando a los memos (aunque sospecho debo usar el CFD u otra variable en FacturaE), y usando la funcion ReemplazaCad. Pero en un caso me deja dos espacios que no se que son (¿fin de linea?), y en otro caso no lo reemplaza. Reemplazo en el memo con lo siguiente, pero me deja dos espacios que no logro determinar que son (sospecho son fin de linea):
Este otro no encuentra la cadena, ahi es donde sospecho que son "Enters" or LF o algo:
Quizas estoy atacando mal el problema, pues estoy un Memo en pantalla (con el texto del xml leído), cuando sospecho que debo trabajar directamente con el CFD. ¿Como puedo desde el codigo reemplazar en el CFD esa parte que esta mal conformada? quitando la basura que menciono arriba con lo que el SAT pide:
¿En el código fuente habrá algo equivalente a?:
Cuando intento esto:
surge este mensaje de error en la aplicación:
Tampoco puedo asignarlo directamente (es de solo lectura):
Saludos cordiales y gracias por la ayuda que me puedan proporcionar.
S
Estoy analizando el código de la addenda para Soriana, ya he logrado añadirla y enviarla al servidor de prueba. (Todavia es un borrador mi aplicación y esta 99% basada en tu codigo fuente).
Ahora bien, al proveedor al que le compramos el generador de CFDs ha vuelto a meter las p@titas y debido al pendiente que tiene con nosotros de añadir las addendas, metio una corrección que le deja basura a todos mis CFDs (incluso si no necesitan addenda) en el area del schema:
Código: Seleccionar todo
version="2.0"
xmlns="http://www.sat.gob.mx/cfd/2"
xmlns:basurita="http://basurita"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd http://www.basurita.com/cfd http://www.basurita.com.mx/cfd/basurita.xsd">
Total, mi intencion es limpiar la referencia del schema, y no logro determinar que usar, a como veo el codigo, una vez generado el CFD ya es de solo lectura y no puedo "tocar" nada extra excepto la addenda... (ojala este equivocado).
Intente atacando a los memos (aunque sospecho debo usar el CFD u otra variable en FacturaE), y usando la funcion ReemplazaCad. Pero en un caso me deja dos espacios que no se que son (¿fin de linea?), y en otro caso no lo reemplaza. Reemplazo en el memo con lo siguiente, pero me deja dos espacios que no logro determinar que son (sospecho son fin de linea):
Código: Seleccionar todo
Memo7.Lines.Text:= RemplazaCad( '', ' http://www.basura.com/cfd http://www.basura.com.mx/cfd/basura.xsd', Memo7.Lines.Text);
Código: Seleccionar todo
Memo7.Lines.Text:= RemplazaCad('xmlns="http://www.sat.gob.mx/cfd/2"','xmlns="http://www.sat.gob.mx/cfd/2" xmlns:basura="http://www.basura.com/cfd"', Memo7.Lines.Text);
Código: Seleccionar todo
version="2.0"
xmlns="http://www.sat.gob.mx/cfd/2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd">
Código: Seleccionar todo
CFD.Set_xmlns('xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd"')
Código: Seleccionar todo
FacturaEForm.CFD.SetAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
FacturaEForm.CFD.SetAttribute('xsi:schemaLocation','http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd');
Código: Seleccionar todo
Attempt to modify a read-only node.
Código: Seleccionar todo
FacturaEForm.XMLDoc.SchemaRef:= 'xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd';
S