Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

XML Serialization σε MemoryStream

Îåêßíçóå áðü ôï ìÝëïò JohnL. Τελευταία δημοσίευση από το μέλος JohnL στις 10-12-2007, 13:17. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-12-2007, 17:50 38123

    XML Serialization σε MemoryStream

    Θέλω να κάνω serialize κάποια objects, χρησιμοποιώντας XML Serialization, και το αποτέλεσμα να το περάσω σε ένα byte array:

    Dim myBooklist As New BookList
    ...
    Dim Serializer As New System.Xml.Serialization.XmlSerializer(GetType(BookList))
    Dim memStream As New MemoryStream
    Dim bufferWrite As Byte()
    Serializer.Serialize(memStream, myBooklist)
    bufferWrite = New Byte(CInt(memStream.Length - 1)) {}
    memStream.Read(bufferWrite, 0, CInt(memStream.Length - 1))


    Όταν τρέχω τον κώδικα όμως, το buffer "ανοίγει" στο σωστό μέγεθος, όμως γεμίζει με bytes 0, όλο το array, σαν να μην διαβάζει από το stream...

    Κάνω κάτι λάθος?
  •  09-12-2007, 18:21 38125 σε απάντηση της 38123

    Απ: XML Serialization σε MemoryStream

    Δοκίμασε το παρακάτω:

    Dim memStream As New MemoryStream()
    Dim Serializer As New XmlSerializer(GetType(BookList))
    Dim tw As New XmlTextWriter(memStream, Nothing)
    Serializer.Serialize(xmlTextWriter, myBooklist)


    Vir prudens non contra ventum mingit
  •  09-12-2007, 18:31 38126 σε απάντηση της 38125

    Απ: XML Serialization σε MemoryStream

    Πώς να περάσω τα περιεχόμενα του xmlTextWriter στο buffer?  (Κατάλαβα εκ των υστέρων τι κάνει ο συγκεκριμένος κώδικας.)

    Δεν έπιασε πάντως.

    Έχω την εντύπωση ότι το πρόβλημα είναι στο memStream.Read(bufferWrite, 0, n)

    Μάλιστα, το έκανα να επιστρέφει τιμή:

    Dim count As Integer
    count = memStream.Read(bufferWrite, 0, n)


    και το count παραμένει 0. Αυτό δε σημαίνει ότι δεν προχωράει καθόλου μέσα στο stream?
  •  09-12-2007, 18:55 38130 σε απάντηση της 38123

    Απ: XML Serialization σε MemoryStream

    Πριν να διαβάσεις από το stream, κάνε ένα memStream.Position = 0 για να το ξαναπάς στην αρχή, γιατί μετά την εγγραφή το Position είναι στο τέλος, εξ ου και τα μηδενικά.
    Νατάσα Μανουσοπούλου
  •  10-12-2007, 13:17 38161 σε απάντηση της 38130

    Απ: XML Serialization σε MemoryStream

    Και όμως ήταν κάτι τόσο απλό...

    Ευχαριστώ!
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems