Hi,
I am looking at the XmlSerialize class and am bothered by the lack of
node testing (NodeType) in this class. I am thinking that the
XmlTextReader is a better choice for this very reason
(System.Xml.XmlTextReader.NodeType). If you can serialize you object
with this class you can test the node type such as:
XmlTextReader objTxtRd;
... definition...
while (objTxtRd.Read())
{
if((objTxtRd.NodeType==XmlNodeType.Element) ||
(objTxtRd.NodeType==XmlNodeType.EndElement)||
(objTxtRd.NodeType==XmlNodeType.XmlDeclaration))
{
...process code
}
}
On Sep 5, 1: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
-~----------~----~----~----~------~----~------~--~---