2010-08-05 12 views
3

Je génère du XML via XmlTextWriter.Comment générer du XML avec CR, au lieu de CRLF dans XmlTextWriter

Le fichier me semble bon, valide (at wc3) et a été accepté par le client.

Mais un fournisseur client se plaint que les fins de ligne sont CRLF, au lieu de simplement CR. Eh bien, je suis sur une machine Win32 utilisant C#, et CRLF est la fin de ligne standard Win32. Y at-il un moyen de modifier les fins de ligne dans XmlTextWriter?

Aussi - les fins de ligne ne devraient-elles pas avoir d'importance pour un analyseur syntaxique XML approprié?

voir aussi: What are carriage return, linefeed, and form feed?

REMARQUE: ressemble à la seule réponse est une solution sur le côté - vous devez utiliser le XmlWriter au lieu de XmlTextWriter

+0

Notez que le _way _ populaire est d'utiliser un seul LF, pas un CR. –

+2

'new XmlTextWriter()' a été abandonné depuis .NET 2.0. Utilisez 'XmlWriter.Create' à la place. –

Répondre

6

bien sûr, des moments après avoir demandé, je trouve un indice sur MSDN (que je ne pouvais pas trouver via google) qui fait référence à XmlWriterSettings.NewLineChars

qui me conduisit à la réponse unaccepted sur SO: Writing XMLDocument to file with specific newline character (c#)

Il est tous dans la terminologie .....

+0

Bonne trouvaille sur l'article SO. – btlog

+0

J'ai accepté ma propre réponse après une semaine passée avec rien de plus élevé; J'attendais de voir si quelque chose de nouveau allait apparaître. –

+0

+1 à juste titre. – Tomalak

4

Utilisez les XmlWriterSettings pour définir ce que vous voulez que votre fin de ligne char.

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

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

Je ne sais pas où les caractères de fin de ligne seraient importants. Je ne l'ai pas rencontré auparavant.

+0

merci. nous tapions simultanément! –

1

Quelle fin de ligne est utilisée ne devrait pas importer à un analyseur correctement mis en œuvre (voir the spec), je cite (Souligné par l'auteur):

Pour simplifier les tâches d'applications, le processeur XML doit se comporter comme si elle normalisé tous les sauts de ligne dans des entités externes analysées (y compris l'entité document ) sur l'entrée, avant analyse syntaxique, en traduisant à la fois la deux -character la séquence #xD #xA et toute #xD qui n'est pas suivie par #xA à un seul caractère #xA.

Par conséquent, cela ne devrait pas poser de problème. Vous voudrez peut-être vous demander ce que le fournisseur du client est en train de faire là-bas, il y a de fortes chances pour qu'il se trompe.

+0

Je suis avec vous sur celui-là, mais c'était le fournisseur d'un client, donc nous n'avons eu aucun effort pour dire qu'ils avaient une implémentation problématique. –

0

Utilisez la propriété XmlWriterSettings.NewLineChars.

Questions connexes