XmlReader.ReadOuterXml() を使用すると、要素が \r\n ではなく \n で区切られます。したがって、たとえば、次の XmlDocument を表す場合
<A>
<B>
</B>
</A>
私は得る
<A>\n<B>\n</B>\n</A>
改行文字を指定するオプションはありますか? XmlWriterSettings にはありますが、XmlReader にはこれがないようです。
これがxmlを読み取るための私のコードです。デフォルトでは、XmlWriterSettings には 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();
}
}