Deserializacja XML bezpośrednio ze stringa

0

Mam problem, serializuję do XMLa obiekt i jest ok.
Niestety nie mogę sobie poradzić z deserializacją. Już nie raz to robiłam, ale zawsze do pliku i z pliku serializowałam/deserializowałam. tym razem jednak mam po prostu stringa z kodem XML i serializacja się udaje, ale deserializacja już nie.

Temat deserializacji to pewnie parę linijek o które proszę, bo kombinowałam już nawet z MemoryStream.

public Object Deserializuj(string xml){

XmlSerializer serializer = new XmlSerializer(typeof[Person]);
XmlDocument doc = new XmlDocument(); // nie wiem czy tym razem się to w ogóle przyda
doc.LoadXml(s);


return serializer.Deserialize(???);

}

Próbowałam też coś w stylu:

            MemoryStream memStream;
            memStream = new MemoryStream();
            XmlTextWriter xmlWriter;
            xmlWriter = new XmlTextWriter(memStream, Encoding.UTF8);
            xmlWriter.Namespaces = true;

            doc.Save(xmlWriter);

            return serializer.Deserialize(memStream);

Kompilator wtedy nie krzyczy podczas kompilacji tylko program się wywala dopiero podczas wywołania tego kodu bo wyrzuca na końcu nulla.

0

Serializacja i deserializacja to zapis obiektów w strumieniu. Dlaczego chcesz deserializować string zawierający XML? Skąd go masz?

Bo na upartego, to możesz skonwertować string do tablicy bajtów, wrzucić go do MemoryStreama, i jego użyć jako argument Deserialize, tylko to jest bardzo zagmatwane rozwiązanie. ;)

1

Nie testowałem, ale nie widzę powodów dlaczego miałoby to nie działać :)

 
  public static class Serializer
  {
    public static string SerializeToString<T>(T obj)
    {
      var serializer = new XmlSerializer(typeof (T));
      var stringBuilder = new StringBuilder();
      var stringWriter = new StringWriter(stringBuilder);

      serializer.Serialize(stringWriter, obj);
      return stringBuilder.ToString();
    }

    public static T DeserializeFromString<T>(string text)
    {
      var serializer = new XmlSerializer(typeof (T));
      var stringReader = new StringReader(text);

      return (T) serializer.Deserialize(stringReader);
    }
  }
0

Wielkie dzięki chłopaki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1