Pergunta

Estou gerando XML via XMLTextWriter.

O arquivo parece bom aos meus olhos, valida (no WC3), e foi aceito pelo cliente.

Mas um fornecedor de clientes está reclamando que os finais de linha são CRLF, em vez de apenas Cr.

Bem, estou em uma máquina Win32 usando C#, e o CRLF é o final de linha padrão do Win32. Existe alguma maneira de alterar as finais de linha no XMLTextWriter?

Além disso-as finais de linha não devem não importar para um analisador XML adequado?

Veja também: O que são o retorno do carro, o alinhamento e o feed de formulário?

Nota: Parece que a única resposta é uma solução lateral - você precisa usar o XMLWriter em vez do XMLTextWriter

Foi útil?

Solução

Claro, momentos depois de perguntar, encontro uma pista no msdn (que não consegui encontrar via Google) que se refere Xmlwritersettings.newlineChars

o que então me levou à resposta inacerada em SO: Escrevendo Xmldocument para Arquivo com Caráter Newline específico (C#)

Está tudo na terminologia .....

Outras dicas

Use o XMLWriterSettings para definir o que você deseja como seu final de linha.

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

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

Não sei onde os personagens de fim de linha importam. Eu não encontrei isso antes.

Que final de linha é usado não deve importar para um analisador devidamente implementado (ver a especificação), Cito (ênfase meu):

Para simplificar as tarefas dos aplicativos, o processador XML deve se comportar como se normalizasse todas as quebras de linha Em entidades analisadas externas (incluindo a entidade do documento) na entrada, antes da análise, traduzindo a sequência de dois caracteres #XD #XA e qualquer #XD que não seja seguido por #XA para um único caractere #XA.

Portanto, você deve ficar bem com a maneira como o tem agora. Você pode perguntar o que o fornecedor do cliente está realmente fazendo lá, é provável que eles estejam fazendo errado.

Use a propriedade XMLWriterSettings.NewlineChars.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top