Domanda

Sto generando XML tramite XMLTextWriter.

Il file mi sembra buono per gli occhi, convalida (a WC3), ed è stato accettato dal cliente.

Ma un fornitore di clienti si lamenta del fatto che gli ending di linea sono CRLF, invece di solo CR.

Bene, sono su una macchina Win32 usando C#e CRLF è la fine standard Win32. Esiste un modo per modificare gli ending di linea in XMLTextWriter?

Inoltre, gli ending di linea non dovrebbero avere importanza per un adeguato parser XML?

Guarda anche: Cosa sono il ritorno del trasporto, il feed di linea e l'alimentazione della forma?

Nota: sembra che l'unica risposta sia una soluzione laterale: devi usare XMLWriter anziché XMLTextWriter

È stato utile?

Soluzione

Certo, pochi istanti dopo averlo chiesto, trovo un indizio su MSDN (a cui non sono riuscito a trovare tramite Google) a cui si riferisce Xmlwritersettings.newlinechars

che poi mi ha portato alla risposta non accettata Quindi: scrivere XMLDocument per archiviare con il carattere newline specifico (C#)

È tutto nella terminologia .....

Altri suggerimenti

Usa XMLWriteRersettings per impostare ciò che desideri come il tuo char di fine riga.

XmlWriterSettings mySettings = new XmlWriterSettings();
mySettings.NewLineChars = "\r";

XmlWriter writer = XmlWriter.Create(
                         new StreamWriter(@"c:\temp\hello.xml", mySettings);

Non so dove significherebbero i personaggi della fine della linea. Non ci ho mai incontrato prima.

Quale finale di linea viene utilizzato non dovrebbe importare un parser correttamente implementato (vedi la specifica), Cito (enfasi il mio):

Per semplificare le attività delle applicazioni, il processore XML deve comportarsi come se normalizzasse tutte le pause della linea In entità analizzate esterne (inclusa l'entità del documento) sull'input, prima dell'analisi, traducendo sia la sequenza a due caratteri #XD #XA che qualsiasi #XD che non è seguita da #XA a un singolo carattere #XA.

Pertanto, dovresti stare bene con il modo in cui lo hai in questo momento. Potresti voler chiedere cosa sta effettivamente facendo il fornitore del cliente lì, è probabile che lo stiano sbagliando.

Utilizzare la proprietà XMLWritersetts.NewLineChars.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top