XmlSerializer在序列化到XML期间保留空格

时间:2015-10-13 10:45:13

标签: c# xmlserializer

我正在使用XmlSerializer for Object - &gt; Xml序列化。当我的对象中的字符串属性为空或仅包含空格时,序列化程序只返回<SomeProperty/>

如何在序列化过程中保留空格?

接下来,如果我放置多个空格SomeProperty = " ";我也要对它们进行序列化,那么<SomeProperty> </SomeProperty>

var xmlSerializer = new XmlSerializer(typeof(T));
var xmlWriterSetting = new XmlWriterSettings()
{
    Encoding = System.Text.Encoding.Default,
    Indent = false,
    OmitXmlDeclaration = true
};

using (var stringWriter = new StringWriter())
using (var xmlWriter = XmlWriter.Create(stringWriter, xmlWriterSetting))
{
    xmlSerializer.Serialize(xmlWriter, InputObject);
    return stringWriter.ToString();
 }

1 个答案:

答案 0 :(得分:1)

您可以控制XML本身的空白处理。所以你应该写这样的属性:

<SomeProperty xml:space="preserve">     </SomeProperty>

为此,只需使用编写器添加属性:

xmlWriter.WriteAttributeString("xml", "space", null, "preserve");

当你读回这个XML时,空格将被视为重要的空格,即使你忽略了读者配置中的空格,也会返回空格。