I'm not sure why you're using the StreamWriter with encoding, but that's
what's messing you up. I tried a few variations of the code below and
determined that the StreamWriter was the culprit.
CODE:

        [Serializable]
        public class Dog {
            public int Age { get; set; }
            public string Name { get; set; }
            public string Breed { get; set; }
        }
        static void Main(string[] args) {
            var dog = new Dog
            {
                Age = 10,
                Breed = "breed1",
                Name = "Name1"
            };
            for (int i = 0; i < 3; i++) {
                using (var stream =
File.Open(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) +
"\\serial.xml", FileMode.Append)) {
                    XmlSerializer xmlS = new XmlSerializer(typeof(Dog));
                    xmlS.Serialize(stream, dog);
                }
            }
        }

OUTPUT:
<?xml version="1.0"?>
<Dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="
http://www.w3.org/2001/XMLSchema";>
  <Age>10</Age>
  <Name>Name1</Name>
  <Breed>breed1</Breed>
</Dog><?xml version="1.0"?>
<Dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="
http://www.w3.org/2001/XMLSchema";>
  <Age>10</Age>
  <Name>Name1</Name>
  <Breed>breed1</Breed>
</Dog><?xml version="1.0"?>
<Dog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="
http://www.w3.org/2001/XMLSchema";>
  <Age>10</Age>
  <Name>Name1</Name>
  <Breed>breed1</Breed>
</Dog>



On Fri, Sep 5, 2008 at 2:59 PM, Dave <[EMAIL PROTECTED]> wrote:

>
> All the examples i've found using XmlSerializer work with one time
> serialization / deserialization of objects... or one time
> serialization / deserialization of collection of objects.
>
> I need to be able to keep a file stream open, and just serialize
> (IrcMessage) objects as they come into my server, then eventually have
> some other thread deserialize the accumulated (IrcMessage) objects.
> the problem is, every time i call:
>
>                StreamWriter messageWriter = new
> StreamWriter(_logFileStream, Encoding.ASCII);
>                XmlSerializer writer = new
> XmlSerializer(typeof(IrcMessage));
>                writer.Serialize(messageWriter, ircMessage2);
>
> where:
>
>    [Serializable]
>    public class IrcMessage
>    {
>        int _channelId = -1;
>        public int ChannelId
>        {
>            get { return _channelId; }
>            set { _channelId = value; }
>        }
>
>        string _ircMessageText = null;
>        public string IrcMessageText
>        {
>            get { return _ircMessageText; }
>            set { _ircMessageText = value; }
>        }
>   }
>
> it causes the following output:
>
> <?xml version="1.0" encoding="us-ascii"?>
> <IrcMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>  <ChannelId>1</ChannelId>
>  <IrcMessageText>103 Host my hostabc</
> IrcMessageText>
> </IrcMessage><?xml version="1.0" encoding="us-ascii"?>
> <IrcMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>  <ChannelId>2</ChannelId>
>  <IrcMessageText>boohaha string</IrcMessageText>
> </IrcMessage><?xml version="1.0" encoding="us-ascii"?>
> <IrcMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
>  <ChannelId>1</ChannelId>
>  <IrcMessageText>sasdjlfsdjfsdjsfdjkfsdjksdfjksdafjk;sd;jasdf</
> IrcMessageText>
> </IrcMessage>
>
> one problem is i don't want the xml version info to keep being
> rewritten...
>
> when trying to deserialize:
>
>            StreamReader ircMessageReader = new
> StreamReader(logFileStream);
>            XmlSerializer ircMessageParser = new
> XmlSerializer(typeof(IrcMessage));
>            return
> (IrcMessage)ircMessageParser.Deserialize(ircMessageReader);
>
> i blow up with Unexpected XML declaration... trying to manually remove
> the declaration from the files causes other errors.  but this is only
> 1 issue i'm seeing.
>
> i could accumulate the objects in a collection then do a onetime
> serialization of a collection of IrcMessage objects, then deserialize
> the collection in the same manner - but this IS NOT what i'm after.
> I.e. i wish to serialize IrcMessage objects to file as they come
> in...  (as stated in 2nd paragraph)
>
> any help would be most appreciated!
>
> thanks, dave
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DotNetDevelopment, VB.NET, C# .NET, ADO.NET, ASP.NET, XML, XML Web 
Services,.NET Remoting" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://cm.megasolutions.net/forums/default.aspx
-~----------~----~----~----~------~----~------~--~---

Reply via email to