2011-02-03 11 views
5

Ho un XML ben formattato senza spazi. Deve essere così.Come rendere XMLDocument non mettere spazi sui tag auto-chiusi?

Quando carico a XMLDocument a firmare, i tag a chiusura automatica ottiene uno spazio aggiuntivo bianco e

<cEAN/> 

diventa:

 <cEAN /> 

Una volta che questo documento deve essere firmato, è impossibile rimuovere lo spazio bianco.

La proprietà PreserveWhiteSpace non ha apportato alcuna differenza al risultato.

Come posso modificare questo comportamento?

+3

Sono curioso. Cosa sta consumando l'XML in modo tale da non poter gestire gli spazi? – spender

+0

Ho capito che lo spazio prima del forwardslash era dettato dallo standard. –

+0

@Bradley: no. Non credo che lo standard imponga il formato di serializzazione a quel livello. –

risposta

3

Non c'è spazio prima della chiusura "/" nello XmlDocument. XmlDocument è una struttura di dati costituita da nodi. È binario. Non è un testo.

Qualsiasi spazio aggiuntivo che si sta vedendo esiste solo quando si serializza il documento come testo.

In realtà stai riscontrando un problema con la firma o pensi solo che lo avrà un problema?

+0

Hai ragione riguardo la serializzazione. E ho un problema con un'agenzia governativa, che chiede lo spazio extra da rimuovere. –

+4

Dì loro di andare a imparare XML. Ricordagli che è uno standard internazionale. –

+0

mentre sono d'accordo, buona fortuna per l'OP con quello! – spender

0

Ho avuto questo problema prima. XML firmato da un hash di base in modo che non possa cambiare quando serializzato. L'ho risolto scrivendo un serializzatore in modo da essere sicuro che avrebbe prodotto l'XML corretto.

La ricetta di base è leggere l'XML con uno XMLReader e scrivere ogni blocco come viene fornito.

0

Prova questo:

XMLDocument doc;

...

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

Problemi correlati