2011-02-03 13 views
5

Tengo un XML bien formateado sin espacios. Debe ser así.¿Cómo hacer que XMLDocument no ponga espacios en las etiquetas de cierre automático?

Cuando cargo a XMLDocument para firmar, las etiquetas de cierre automático obtiene un espacio en blanco adicional y

<cEAN/> 

se convierte en:

 <cEAN /> 

Una vez que este documento debe ser firmado, es imposible eliminar el espacio en blanco.

La propiedad PreserveWhiteSpace no hace ninguna diferencia en el resultado.

¿Cómo puedo modificar este comportamiento?

+3

Tengo curiosidad. ¿Qué está consumiendo el XML de modo que no puede ocuparse de los espacios? – spender

+0

Comprendí que el espacio antes del reenvío fue dictado por el estándar. –

+0

@Bradley: no. No creo que el estándar dicte el formato de serialización en ese grado. –

Respuesta

3

No hay espacio antes del cierre "/" en el XmlDocument. XmlDocument es una estructura de datos que consiste en nodos. Es binario. No es texto

Cualquier espacio adicional que esté viendo existe solo cuando serializa el documento como texto.

¿Estás teniendo un problema con la firma o solo piensas que tendrá problema?

+0

Tiene razón acerca de la serialización. Y estoy teniendo un problema con una agencia gubernamental, que pide que se elimine el espacio adicional. –

+4

Diles que vayan a aprender XML. Recuérdeles que es un estándar internacional. –

+0

mientras estoy de acuerdo, ¡buena suerte al OP con eso! – spender

0

He tenido este problema antes. XML firmado por un Hash básico por lo que no puede cambiar cuando se serializa. Lo resolví escribiendo un serializador para poder estar seguro de que daría salida al XML correcto.

La receta básica es Leer el XML con un XMLReader, y escribir cada fragmento como viene.

0

Pruebe esto:

XMLDocument doc;

...

cadena xmlString = doc.OuterXml.Replace ("/>", "/>");

Cuestiones relacionadas