I wasn't very specific in my last post so an example may help:
For the data:
<MyObject>
<Std>
<MyVal>12</MyVal>
<MyString>Hello</MyString>
</Std>
</MyObject>
This code should read/write it(Although I've not actually run it)
(The new that takes filename is to show how to get your reader online)
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Xml.Schema;
public class MyObject : IXmlSerializable
{
private int myVal;
private string myString;
public MyObject(string fileName)
{ FileStream aReader = new FileStream(fileName,
FileMode.Open);
XmlTextReader aXmlTextReader = new XmlTextReader(aReader);
ReadXml(aXmlTextReader);
}
public MyObject(XmlReader reader)
{ ReadXml (reader);
}
public XmlSchema GetSchema()
{ return null;
}
public void ReadXml(XmlReader reader)
{ reader.ReadStartElement ("MyObject");
// works like a stack, where you push and pop though levels
reader.ReadStartElement("std");
myVal = int.Parse( reader.ReadElementString ("MyValue"));
myString = reader.ReadElementString("MyString");
reader.ReadEndElement();
reader.ReadEndElement();
}
public void WriteXml(XmlWriter writer)
{ writer.WriteStartElement ("MyObject");
// Now inside MyObject
writer.WriteStartElement ("std");
// Now inside MyObject/std
writer.WriteElementString ("MyValue", myVal.ToString());
writer.WriteElementString("MyString",myString);
writer.WriteEndElement(); // Close MyObject tag
writer.WriteEndElement(); // Close MyObject tag
}
}
Any good to you?
Jeremy
>Have you tried implemententing System.Xml.Serialization.IXmlSerializable
>
>You can then serialise and deserialise in whatever way you want.
>Return null or nothing from GetSchema(), and you're away.
>
>You now have the two functions ReadXml and WriteXml to play with
>which recieve System.Xml.XmlReader and System.Xml.XmlWriter
>respectively.
>
>The you can read and write in pretty much anyway you want,
>is that the kind of thing you are after?
>
>
>Jeremy
>
>>>I understand fairly well the use of the [Serializable] attribute
>>>and the native Binary
>>>IFormatter interface. I understand also that there is XML and SOAP
>>>serialization. But all of these seem to serialize to the CLR's view of
>>>an object or something with XML Schema types. What I actually have to do
>>>is: we have some XML files that we create in our application. They were
>>>defined before XML schema and they are not Schema compliant. I have some
>>>.NET classes I am defining and I need to put the data/state in them
>>>written out to these XML files in a certain format. The trick is I can't
>>>just dump .NET's "view" of the objects. The XML files have a certain
>>>format. Can I make use of any of XML Serialization or do I just have
>>>"pound" XML into the files using classes in System.Xml? In other words,
>>>how customizable is the XML serialization? Any ideas would be greatly
>>>appreciated.
You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.