我正在使用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();
}
答案 0 :(得分:1)
您可以控制XML本身的空白处理。所以你应该写这样的属性:
<SomeProperty xml:space="preserve"> </SomeProperty>
为此,只需使用编写器添加属性:
xmlWriter.WriteAttributeString("xml", "space", null, "preserve");
当你读回这个XML时,空格将被视为重要的空格,即使你忽略了读者配置中的空格,也会返回空格。