новая строка xmlreader \n вместо \r\n

Это - выстрел в темноте, но Вы могли попробовать двойную буферизацию управление.

SetStyle(
  ControlStyles.AllPaintingInWmPaint |
  ControlStyles.UserPaint |
  ControlStyles.DoubleBuffer, true)
11
задан Dour High Arch 25 November 2009 в 06:06
поделиться

3 ответа

XmlReader автоматически нормализует \ r \ n \ в \ n . Хотя это кажется необычным для Windows, на самом деле это требуется спецификацией XML ( http://www.w3.org/TR/2008/REC-xml-20081126/#sec-line-ends ).

Вы можете выполнить String.Replace :

string s = reader.ReadOuterXml().Replace("\n", "\r\n");
13
ответ дан 3 December 2019 в 06:21
поделиться

XmlReader читает файлы, а не записывает их. Если вы получаете \ n в вашем ридере, это потому, что это то, что находится в файле. И \ n, и \ r являются пробелами и семантически одинаковы в XML, это не повлияет на значение или содержание данных.

Изменить:

Это похоже на C #, а не на Ruby. Как говорит бинарный кодировщик, ReadOuterXml определен для возврата нормализованного XML. Обычно это именно то, что вам нужно. Если вам нужен необработанный XML, вы должны использовать Encoding.UTF8.GetString (memStream.ToArray ()) , а не XmlReader .

-1
ответ дан 3 December 2019 в 06:21
поделиться

Есть более быстрый способ, если вы просто пытаетесь перейти на UTF-8. Сначала создайте писателя:

public class EncodedStringWriter : StringWriter
{
    public EncodedStringWriter(StringBuilder sb, Encoding encoding)
        : base(sb)
    {
        _encoding = encoding;
    }

    private Encoding _encoding;

    public override Encoding Encoding
    {
        get
        {
            return _encoding;
        }
    }

}

Затем используйте его:

XmlDocument doc = new XmlDocument();
doc.LoadXml("<foo><bar /></foo>");

StringBuilder sb = new StringBuilder();
XmlWriterSettings xws = new XmlWriterSettings();
xws.Indent = true;

using( EncodedStringWriter w = new EncodedStringWriter(sb, Encoding.UTF8) )
{
    using( XmlWriter writer = XmlWriter.Create(w, xws) )
    {
        doc.WriteTo(writer);
    }
}
string xml = sb.ToString();

Надо отдать должное, если кредит причитается .

0
ответ дан 3 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: