Spiga

序列化一个字符串到CDATA元素(.NET 1.1)

2007-04-16 14:29 by sun@live, 411 visits, 收藏, 编辑
 

public class CDATA : IXmlSerializable

{

private string text;

public CDATA()

{}

public CDATA(string text)

{

this.text = text;

}

public string Text

{

get { return text; }

}

XmlSchema IXmlSerializable.GetSchema()

{

return null;

}

void IXmlSerializable.ReadXml(XmlReader reader)

{

this.text = reader.ReadString();

}

void IXmlSerializable.WriteXml(XmlWriter writer)

{

writer.WriteCData(this.text);

}

}

 

[Serializable]

public class ErrorMessage

{

private CDATA message

….

[XmlElement("message", Type=typeof(CDATA))]

public CDATA Message

{

get { return message; }

set { message = value; }

}

….

}

Add your comment

1 条回复

  1. #1楼 sealong[未注册用户]2008-01-10 17:17
    补充下阁下写的例子:
    当你序列化的对象,只有一个属性时,类 CDATA 中,
    void IXmlSerializable.ReadXml(XmlReader reader)
    {
    this.text = reader.ReadString();
    }

    这样写是可以读到的,但是这个写法,在读取的时候,存在问题,虽然偶然读取成功!
    当对象的属性有多个的时候,请使用下面的这实现方式!
    不然,你在反序列化是读去不到内容的。
    void IXmlSerializable.ReadXml(XmlReader reader)
    {
    this.text = reader.ReadElementContentAsString();
    }
     回复 引用