微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.net – XmlSerializer和嵌入式WhiteSpace

我有以下包含空格Field1Value的xml.当我反序列化该xml时,我失去了单个空格字符. Request.Field2的值为“”.这是xml序列化程序中的错误吗?
有人可以推荐一个解决方案/解决方法来保留这个空间吗?

...
            var encoding = new System.Text.UTF8Encoding();
            var _xmlData = "<Request><Field1>Field1Value</Field1><Field2>   </Field2></Request>";
            var _xmlDataAsByteArray = new byte[_xmlData.Length];
            _xmlDataAsByteArray = encoding.GetBytes(_xmlData);

            var _memoryStream = new MemoryStream(_xmlDataAsByteArray);

           var _XmlSerializer = new System.Xml.Serialization.XmlSerializer(typeof(Request));

            Request _request = _XmlSerializer.Deserialize(_memoryStream) as Request;

  ...
         public class Request
           {
               public string Field1;
               public string Field2;
           }

解决方法

不,这不是一个错误,而是预期的行为.除非您选择保留空间,否则XML是处理器(即读取和写入XML的应用程序)应该规范化空白.请参阅XML 1.1规范 here的2.1节.

要保留空白,必须包含xml:space =“preserve”属性.因此XML应如下所示:

<Request>
   <Field1>Field1Value</Field1>
   <!-- spaces inside Field2 will be preserved -->
   <Field2 xml:space="preserve">   </Field2> 
</Request>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。