|
連続で書き込みすみません。
ちなみに C# だと下記のようなコードで実現できます。
class Program
{
static void Main(string[] args)
{
CustomObject custom = null;
// Deserialize
using (StreamReader sr = new StreamReader("rCustomObject.xml", Encoding.GetEncoding("utf-8")))
{
XmlSerializer xs = new XmlSerializer(typeof(CustomObject));
custom = xs.Deserialize(sr) as CustomObject;
}
Console.WriteLine(custom.Value);
// Serialize
using (StreamWriter sw = new StreamWriter("wCustomObject.xml", false, Encoding.GetEncoding("utf-8")))
{
XmlSerializer xs = new XmlSerializer(typeof(CustomObject));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
xs.Serialize(sw, custom, ns);
}
}
}
public class CustomObject : IXmlSerializable
{
public string Value { get; set; }
XmlSchema IXmlSerializable.GetSchema()
{
return null;
}
// Deserialize
void IXmlSerializable.ReadXml(XmlReader reader)
{
while (reader.Read())
{
if (reader.Name.Equals("Value"))
Value = reader.ReadInnerXml();
}
}
// Serialize
void IXmlSerializable.WriteXml(XmlWriter writer)
{
using (StringReader sr = new StringReader("<Value>" + Value + "</Value>"))
{
using (XmlReader xr = XmlReader.Create(sr))
{
writer.WriteNode(xr, true);
}
}
}
}
|