XMLReader的换行符的\ n代替\ r \ñ [英] xmlreader newline \n instead of \r\n

查看:853
本文介绍了XMLReader的换行符的\ n代替\ r \ñ的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用XmlReader.ReadOuterXml(),元素由\分隔的n代替\ r \ñ。 所以,举例来说,如果我有XmlDocument的重新presentatino

 < A>
< B>
< / B>
< / A>
 

我收到

 < A> \ N'LT; B> \ N'LT; / B> \ N'LT; / A>
 

有一个选项来指定换行符? XmlWriterSettings有,但XmlReader的似乎并不具备这一点。

下面是我的code读取XML。需要注意的是XmlWriterSettings在默认情况下已经NewLineHandling =替换

  XmlDocument的XMLDOCUMENT =<产生一些XmlDocument的>
XmlWriterSettings设置=新XmlWriterSettings();
settings.Indent = TRUE;

//使用一个内存流,因为它接受UTF8字符。如果我们使用
//字符串生成的XML将是UTF16。
使用(MemoryStream的memStream =新的MemoryStream())
{
    使用(的XmlWriter的XmlWriter = XmlWriter.Create(memStream,设置))
    {
        xmlDocument.Save(XmlWriter的);
    }

    //设置指针回流的开始被读
    memStream.Position = 0;
    使用(XmlReader的读者= XmlReader.Create(memStream))
    {
        reader.Read();
        字符串标题= reader.Value;
        reader.MoveToContent();
        回归< XML+标题+>? + Environment.NewLine + reader.ReadOuterXml();
    }
}
 

解决方案

的XmlReader 将自动标准化 \ r \ñ\ 。尽管这似乎是不寻常在Windows上,它实际上是要求由XML规范(<一href="http://www.w3.org/TR/2008/REC-xml-20081126/#sec-line-ends">http://www.w3.org/TR/2008/REC-xml-20081126/#sec-line-ends).

您可以做一个与string.replace

 字符串s = reader.ReadOuterXml()更换(\ N,\ r \ N)。
 

When I use XmlReader.ReadOuterXml(), elements are separated by \n instead of \r\n. So, for example, if I have XmlDocument representatino of

<A>
<B>
</B>
</A>

I get

<A>\n<B>\n</B>\n</A>

Is there an option to specify newline character? XmlWriterSettings has it but XmlReader doesn't seem to have this.

Here is my code to read xml. Note that XmlWriterSettings by default has NewLineHandling = Replace

XmlDocument xmlDocument = <Generate some XmlDocument>
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

// Use a memory stream because it accepts UTF8 characters.  If we use a 
// string builder the XML will be UTF16.
using (MemoryStream memStream = new MemoryStream())
{
    using (XmlWriter xmlWriter = XmlWriter.Create(memStream, settings))
    {
        xmlDocument.Save(xmlWriter);
    }

    //Set the pointer back to the beginning of the stream to be read
    memStream.Position = 0;
    using (XmlReader reader = XmlReader.Create(memStream))
    {
        reader.Read();
        string header = reader.Value;
        reader.MoveToContent();
        return "<?xml " + header + " ?>" + Environment.NewLine + reader.ReadOuterXml();
    }
}

解决方案

XmlReader will automatically normalize \r\n\ to \n. Although this seems unusual on Windows, it is actually required by the XML Specification (http://www.w3.org/TR/2008/REC-xml-20081126/#sec-line-ends).

You can do a String.Replace:

string s = reader.ReadOuterXml().Replace("\n", "\r\n");

这篇关于XMLReader的换行符的\ n代替\ r \ñ的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆