gpt4 book ai didi

c# - 序列化 : Write out pre-made XML to XmlWriter. 实现 IXmlSerializable C#

转载 作者:行者123 更新时间:2023-11-30 22:44:31 24 4
gpt4 key购买 nike

背景/目标

或多或少,我正在尝试创建一组将被序列化为 XML 的嵌套对象。

基本层次结构类似于:

  • 文件
  • 文档
  • 内容

这将转化为类似的东西(这仍然是基本的)

<Documents>
<Document>
<Contents>
Custom objects
</Contents>
</Document>
<Document>
<Contents>
Custom objects
</Contents>
</Document>
</Documents>

因为这些对象不能被原生序列化,它们必须实现IXmlSerializable接口(interface)(在完整版本中每一层都包含其他需要facade被序列化的对象,字典类型等等,也序列化私有(private)变量)。

方法

我的方法如下

  1. 序列化文档对象
  2. Documents 对象将序列化它所有的子文档对象
  3. 那些子文档对象将序列化内容对象
  4. 等等……

问题

IXmlSerializable 提供 XmlReader 和 XmlWriter 来序列化和反序列化对象。如何将序列化的 XML 附加到 XmlWriter?我不想写出一个元素,我想写出一个 XML block 。

换句话说,我的内容对象将写出 ElementStrings

来自子元素

public 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 被转义(< 变成 & lt; 等等)。

这不可能发生,因为虽然 XML 将用于跨系统共享对象,但它也将通过 XSLT 格式化并显示。

我的方法错了吗?

有没有办法防止转义或我错过的方法?

我们将不胜感激。

最佳答案

public void WriteXml(XmlWriter writer)
{
writer.WriteRaw(ChildObject.Serialize());
}

关于c# - 序列化 : Write out pre-made XML to XmlWriter. 实现 IXmlSerializable C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3398572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com