none
Fichero corrupto al generar XML RRS feed

  • Pregunta

  • Hola a todos !

    Estoy teniendo problemas a la hora de generar un archivo tipo "docx" desde mi aplicacion .Net . No puedo abrir el fichero generandome el tipico error cuyo detalle es "Error no especificado" en la linea 2.

    He convertido el fichero a zip para ver el document.xml y lo he formateado para distribuirlo en diferentes lineas. He vuelto a abrir el fichero con xml modificado y me dice que mi error esta en la siguiente zona. Segun he visto la estructura que tiene es correcta y no deberia dar ningun error.

    Dejo el codigo y a ver si alguien puede darme algo de luz en el tema

    <w:sdt>
    								<w:sdtPr>
    									<w:rPr>
    										<w:b/>
    									</w:rPr>
    									<w:alias w:val="NOMBRE"/>
    									<w:tag w:val="2|2|9|0|0|2|0|0"/>
    									<w:id w:val="634446419"/>
    									<w:placeholder>
    										<w:docPart w:val="07EE4DDDD7844D3482E5D9F8044D70B9"/>
    									</w:placeholder>
    									<w:text/>
    								</w:sdtPr>
    								<w:sdtContent>
    									<w:sdt>
    										<w:sdtPr>
    											<w:rPr>
    												<w:b/>
    											</w:rPr>
    											<w:alias w:val="NOMBRE"/>
    											<w:tag w:val="2|2|9|0|0|2|0|0"/>
    											<w:id w:val="-2071340402"/>
    											<w:placeholder>
    												<w:docPart w:val="6BDA2A410B9B4B2391FA1B2DAF4445FC"/>
    											</w:placeholder>
    											<w:text/>
    										</w:sdtPr>
    										<w:sdtContent>
    											<w:r w:rsidR="00A132BC">
    												<w:rPr>
    													<w:b/>
    												</w:rPr>
    												<w:t>“</w:t>
    											</w:r>
    											<w:r w:rsidR="00A132BC" w:rsidRPr="00A132BC">
    												<w:rPr>
    													<w:b/>
    												</w:rPr>
    												<w:t>GARANTÍA</w:t>
    											</w:r>
    											<w:r w:rsidR="00A132BC">
    												<w:rPr>
    													<w:b/>
    												</w:rPr>
    												<w:t>”</w:t>
    											</w:r>
    										</w:sdtContent>
    									</w:sdt>
    								</w:sdtContent>
    							</w:sdt>

    P.D. Imagino que esta pregunta va en este apartado del foro, si no fuera asi decidmelo y lo cambio



    • Editado Jk_rod lunes, 18 de septiembre de 2017 14:51
    lunes, 18 de septiembre de 2017 14:29

Todas las respuestas

  • Puede ser que te falte o sea incorrecta la declaración <?xml... ?> en la linea 1. O tal vez te falte o sea incorrecto alguno de los xmlns en el nodo raiz del xml (que no se ve en la muestra de xml que has aportado). O tal vez la codificación del fichero (por ejemplo, que lo hayas grabado en ANSI en lugar de utf'8; esto solo se nota si contiene algún carácter no-ascii, tal como la Í que tienes en "GARANTÍA")

    ¿Cómo estás generando el documento? ¿Usas las librerías OpenXml de Microsoft? Si lo haces así, en principio ellas solas deben meter toda la estructura necesaria en el xml, y no te tienes que preocupar de los namespaces ni la declaración ni la codificación ni nada.

    lunes, 18 de septiembre de 2017 15:09
  • Puede ser que te falte o sea incorrecta la declaración <?xml... ?> en la linea 1. O tal vez te falte o sea incorrecto alguno de los xmlns en el nodo raiz del xml (que no se ve en la muestra de xml que has aportado). O tal vez la codificación del fichero (por ejemplo, que lo hayas grabado en ANSI en lugar de utf'8; esto solo se nota si contiene algún carácter no-ascii, tal como la Í que tienes en "GARANTÍA")

    ¿Cómo estás generando el documento? ¿Usas las librerías OpenXml de Microsoft? Si lo haces así, en principio ellas solas deben meter toda la estructura necesaria en el xml, y no te tienes que preocupar de los namespaces ni la declaración ni la codificación ni nada.

    Hola Alberto, no creo que sea por el tema de las tildes porque este codigo tambien me da error.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14">
    	<w:body>
    	<w:sdt>
    							<w:sdtcontent>
    
    		<w:p w:rsidR="006943E0" w:rsidRPr="006943E0" w:rsidRDefault="006943E0" w:rsidP="006943E0">
    							<w:pPr>
    								<w:pStyle w:val="AgnNormal"/>
    							</w:pPr>
    							<w:r w:rsidRPr="006943E0">
    								<w:t xml:space="preserve">Copia</w:t>
    							</w:r>
    							<w:sdt>
    								<w:sdtPr>
    									<w:rPr>
    										<w:b/>
    									</w:rPr>
    									<w:alias w:val="NOMBRE"/>
    									<w:tag w:val="2|2|9|0|0|2|0|0"/>
    									<w:id w:val="634446419"/>
    									<w:placeholder>
    										<w:docPart w:val="07EE4DDDD7844D3482E5D9F8044D70B9"/>
    									</w:placeholder>
    									<w:text/>
    								</w:sdtPr>
    								<w:sdtContent>
    									<w:sdt>
    										<w:sdtPr>
    											<w:rPr>
    												<w:b/>
    											</w:rPr>
    											<w:alias w:val="NOMBRE"/>
    											<w:tag w:val="2|2|9|0|0|2|0|0"/>
    											<w:id w:val="-2071340402"/>
    											<w:placeholder>
    												<w:docPart w:val="6BDA2A410B9B4B2391FA1B2DAF4445FC"/>
    											</w:placeholder>
    											<w:text/>
    										</w:sdtPr>
    										<w:sdtContent>
    											<w:r w:rsidR="00A132BC">
    												<w:rPr>
    													<w:b/>
    												</w:rPr>
    												<w:t>“</w:t>
    											</w:r>
    											<w:r w:rsidR="00A132BC" w:rsidRPr="00A132BC">
    												<w:rPr>
    													<w:b/>
    												</w:rPr>
    												<w:t>ESCRITURA</w:t>
    											</w:r>
    											<w:r w:rsidR="00A132BC">
    												<w:rPr>
    													<w:b/>
    												</w:rPr>
    												<w:t>”</w:t>
    											</w:r>
    										</w:sdtContent>
    									</w:sdt>
    								</w:sdtContent>
    							</w:sdt>
    							<w:r w:rsidRPr="006943E0">
    								<w:t xml:space="preserve">VACIO</w:t>
    							</w:r>
    							<w:r w:rsidRPr="006943E0">
    								<w:tab/>
    							</w:r>
    						</w:p>
    						</w:sdtcontent>
    						</w:sdt>
    			<w:sectPr w:rsidR="007614A7" w:rsidRPr="007D77EF" w:rsidSect="007D77EF">
    			<w:headerReference w:type="even" r:id="rId10"/>
    			<w:headerReference w:type="default" r:id="rId11"/>
    			<w:footerReference w:type="even" r:id="rId12"/>
    			<w:footerReference w:type="default" r:id="rId13"/>
    			<w:headerReference w:type="first" r:id="rId14"/>
    			<w:footerReference w:type="first" r:id="rId15"/>
    			<w:pgSz w:w="11906" w:h="16838"/>
    			<w:pgMar w:top="567" w:right="1416" w:bottom="2268" w:left="2835" w:header="720" w:footer="567" w:gutter="0"/>
    			<w:cols w:space="708"/>
    			<w:titlePg/>
    			<w:docGrid w:linePitch="360"/>
    		</w:sectPr>
    	</w:body>
    </w:document>

    Cuando lo repara quita este trozo de codigo ( linea 27 ) 

    <w:sdtContent>
    									<w:sdt>
    										<w:sdtPr>
    											<w:rPr>
    												<w:b/>
    											</w:rPr>
    											<w:alias w:val="NOMBRE"/>
    											<w:tag w:val="2|2|9|0|0|2|0|0"/>
    											<w:id w:val="-2071340402"/>
    											<w:placeholder>
    												<w:docPart w:val="6BDA2A410B9B4B2391FA1B2DAF4445FC"/>
    											</w:placeholder>
    											<w:text/>
    										</w:sdtPr>

    y funciona perfectamente.

    Alguna idea de porque puede ser ? 

    martes, 19 de septiembre de 2017 13:50
  • Puede ser por culpa del <w:id w:val="-2071340402"/>. Tiene pinta de ser un UINT que lo se esta procesando como INT y entonces sale negativo en lugar de salir su valor real. Si buscas por la red, aparecen bastantes mensajes en los foros quejandose de este mismo tema y de como causa problemas en algunas versiones de Office (y en otras no). No se como solucionarlo, pero tal vex te de una pista acerca de por donde podria andar el problema.
    martes, 19 de septiembre de 2017 15:21
  • Puede ser por culpa del <w:id w:val="-2071340402"/>. Tiene pinta de ser un UINT que lo se esta procesando como INT y entonces sale negativo en lugar de salir su valor real. Si buscas por la red, aparecen bastantes mensajes en los foros quejandose de este mismo tema y de como causa problemas en algunas versiones de Office (y en otras no). No se como solucionarlo, pero tal vex te de una pista acerca de por donde podria andar el problema.

    Hola Alberto le echare un ojo por si pudiera ser ese el problema y te digo algo.

    Muchas gracias.


    • Editado Jk_rod miércoles, 20 de septiembre de 2017 7:37
    miércoles, 20 de septiembre de 2017 7:33
  • Ya lo he probado y nada sigue saltandome el mismo error... he mirado si alguien tiene el mismo caso que yo pero no encuentro nada. Tampoco se mucho de este tipo de programacion y no se si la estructura del segundo <sdtcontent> es correcta.
    miércoles, 20 de septiembre de 2017 7:38
  • [...] Tampoco se mucho de este tipo de programacion y no se si la estructura del segundo <sdtcontent> es correcta.
    Para esto tengo una sugerencia: descárgate de Microsft el SDK de OpenXML. Tiene una herramienta para abrir y analizar los archivos existentes, y también un comparador de ficheros que te dice las diferencias entre un XML y otro. Yo lo encuentro utilísimo, porque cuando no sé la forma que debe tener una determinada entrada en el XML, lo que hago es crear un fichero con Office y salvarlo, luego hacer en pantalla el cambio que introduzca la modificación que deseo, lo salvo en otro archivo y luego los comparo. Eso me señala en el comparador precisamente cuál es la diferencia que da lugar a ese cambio en el documento.
    miércoles, 20 de septiembre de 2017 7:53
  • Perfecto, le echare un ojo. Yo para comparacion de archivos utilizo winmerge que no va nada mal. Pero que analice el xml antes de ejecutarlo me parece super util. Seguire haciendo pruebas y te digo algo
    miércoles, 20 de septiembre de 2017 7:55
  • [...] Tampoco se mucho de este tipo de programacion y no se si la estructura del segundo <sdtcontent> es correcta.

    Para esto tengo una sugerencia: descárgate de Microsft el SDK de OpenXML. Tiene una herramienta para abrir y analizar los archivos existentes, y también un comparador de ficheros que te dice las diferencias entre un XML y otro. Yo lo encuentro utilísimo, porque cuando no sé la forma que debe tener una determinada entrada en el XML, lo que hago es crear un fichero con Office y salvarlo, luego hacer en pantalla el cambio que introduzca la modificación que deseo, lo salvo en otro archivo y luego los comparo. Eso me señala en el comparador precisamente cuál es la diferencia que da lugar a ese cambio en el documento.
    Buenos dias Alberto, he intentado usar un xsd para comprobar si la estructura es correcta pero no consigo utilizarlo correctamente. Sigo mirando cosas aunque creo que mi codigo no es el que lo corrompe sino el propio word
    jueves, 21 de septiembre de 2017 8:33