проблема в XMLSerializer, когда значение строкового поля является пробелом - PullRequest
2 голосов
/ 29 января 2011

использование XMLSerializer для сохранения объекта, созданного из класса, такого как myClass

Public Class MyClass
{
  Public String test = " " ;
}

, приведет к:

<MyClass>
  <test> </test>
</MyClass>

, но когда я захочу загрузить xmlфайл выглядит так, как будто он удаляет пробел, который мне нужен.Как я могу решить эту проблему ?спасибо

Ответы [ 2 ]

2 голосов
/ 29 января 2011

Невозможно воспроизвести - кажется, хорошо:

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;

public class MyClass
{
    [XmlElement("test")]
    public string Test { get; set; }
}
static class Program
{
    static void Main()
    {
        XmlSerializer ser = new XmlSerializer(typeof(MyClass));
        MyClass orig = new MyClass { Test = " " }, clone;
        using (var file = XmlWriter.Create("my.xml"))
        {
            ser.Serialize(file, orig);
        }
        using (var file = XmlReader.Create("my.xml"))
        {
            clone = (MyClass)ser.Deserialize(file);
        }
        Console.WriteLine("'" + clone.Test + "'");
        Console.WriteLine(File.ReadAllText("my.xml"));
    }
}

выходы:

' '

и

<?xml version="1.0" encoding="utf-8"?><MyClass xmlns:xsi="http://www.w3.org/2001
/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><test> </test>
</MyClass>

Это может помочь более точно определить, как вы пытаетесь его просмотреть, так что это "выглядит так, будто оно удаляет пустое пространство".

0 голосов
/ 29 января 2011

У меня возникла похожая проблема при чтении моего XML-файла.Я не выполнил работу с XMLSerializer, но при чтении в файле XML в качестве набора XMLDocument XMLDocument.PreserveWhitespace = true.

...