背景/目标
或多或少,我尝试创建一组嵌套的对象,这些对象将被序列化为XML。
基本的层次结构如下:
它会翻译成类似的东西(但这仍然是基本的变化)
<Documents>
<Document>
<Contents>
Custom objects
</Contents>
</Document>
<Document>
<Contents>
Custom objects
</Contents>
</Document>
</Documents>
因为这些对象不能本机序列化,所以它们必须实现IXML可序列化接口。(
在完整的版本中,每个级别包含其他需要序列化外观的对象、字典类型等,还包括序列化私有变量。
)
途径
我的方法如下
-
序列化文档对象
-
文档对象将序列化其所有子文档对象
-
这些子文档对象将序列化内容对象
-
等等…
问题
IXMLSerializable提供了一个XmlReader和XmlWriter来序列化和反序列化对象。如何将序列化XML附加到XML编写器?我不想写出一个元素,我想写出一个XML块。
换句话说,我的内容对象将写出元素字符串
从子元素
公共void writexml(XmlWriter编写器)
{
writer.WriteElementString("Type", m_sType);
writer.WriteElementString("Assembly", m_sAssembly);
writer.WriteElementString("XSL", m_sXSL);
writer.WriteElementString("ID", m_sID);
}
但是我的文档对象需要写出序列化的子对象
public void WriteXml(XmlWriter writer)
{
//Fake CODE
writer.Append(ChildObject.Serialize());
}
这部分我好像不明白。
如果我通过writer.writeElementString(“childObject”,childObject.serialize())附加XML,那么我的XML将被转义(<变为<等等)。
这是不可能发生的,因为尽管XML将用于跨系统共享对象,但它也将通过XSLT格式化并显示。
我的方法不对吗?
有没有办法防止逃跑或者我错过了什么方法?
沿着这条线的任何东西都会非常感激。