Deserializacja XML bezpośrednio ze stringa

Odpowiedz Nowy wątek
2013-03-09 18:08
Katarina22
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.

Pozostało 580 znaków

2013-03-09 20:01
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. ;)


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2013-03-09 20:03

Pozostało 580 znaków

2013-03-09 20:24
Jonathan1500
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);
    }
  }
Racja, zapomniałem o tym, że można TextReadera użyć. - somekind 2013-03-09 22:35

Pozostało 580 znaków

2013-03-09 22:42
Katarina22
0

Wielkie dzięki chłopaki.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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