C# xml序列化为带空格的字符串
我有一些数据要序列化为XML字符串,在内存中保留空白。我尝试了以下方法:C# xml序列化为带空格的字符串,c#,xml,C#,Xml,我有一些数据要序列化为XML字符串,在内存中保留空白。我尝试了以下方法: [Serializable] public class MyClass { public string NormalField {get; set;} public string WhitespaceField {get; set;} } string GetXml(List<MyClass> data) { st
[Serializable]
public class MyClass
{
public string NormalField {get; set;}
public string WhitespaceField {get; set;}
}
string GetXml(List<MyClass> data)
{
string xml = "";
XmlSerializer ser = new XmlSerializer(typeof(List<MyClass>));
using (MemoryStream xmlStream = new MemoryStream())
{
ser.Serialize(xmlStream, data);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.PreserveWhitespace = true;
xmlStream.Position = 0;
xmlDoc.Load(xmlStream);
xml = xmlDoc.OuterXml;
}
return xml;
}
void Execute()
{
List<MyClass> list = new List<MyClass>();
list.Add(new MyClass { NormalField = "a", WhitespaceField = " 456" });
string xml = GetXml(list);
}
但是,不会保留空白。具体来说,我的数据中有一个字段是一个带前导空格的字符串,我希望保留它,但它不会发生。
我做错了什么?在加载到XmlDocument之前,您不需要重置流的Position属性吗?另外,在查看OuterXml之前,请先查看文档。换言之,请确保它不会从外部XML中剥离空白。发布一个如何,以便我们可以复制和粘贴您的代码并尝试回答。我添加了一个功能完整的示例。我刚刚意识到它实际上是有效的,只有VS中的XML可视化工具显示了错误的数据,没有前导空格。文本可视化工具显示正确的数据。