C# XmlSerializer 显然忽略了 XmlTextAttribute 并在被序列化的对象的字符串属性中转义 XML 片段

问题描述

我正在对一些旧的现有 .Net 4.6.1 代码进行故障排除,这些代码是 XML 序列化此类:

public class Orders
{
    private int _pagenumber = 0;

    [XmlAttribute]
    public int pages
    {
        get { return _pagenumber; }
        set { _pagenumber = value; }
    }

    [XmlText]
    public string OrdersXml { get; set; }
}

OrdersXml 字符串包含一块已经 XML 序列化的 Order 对象(即 XML 文本,如:“<Order><OrderId>1</OrderId>...</Order><Order>...</Order>...”)。 (出于各种原因,它们在其他地方被 XML 序列化,并且不会重新设计。)

目的是在此 Orders 对象的序列化中逐字包含该 XML 块 - 换句话说,就好像 string OrdersXml一个被序列化的 Orders[] OrdersXML Orders 对象,最终类似于:<Orders pages="6"><Order><OrderID>123456</OrderID>...</Order>...</Orders>

但这并没有发生。 OrdersXml 属性中的 XML 被序列化为 XML 转义的纯文本,它出现“<Orders pages="6">&lt;Order&gt;&lt;OrderID&gt;2&lt;/OrderID&gt;...” - 代码正在进行序列化后清理以扭转这种情况,并且它出现了有用的正确在大多数情况下。我宁愿它首先正确序列化...

我试过改用 [XmlText(typeof(string))] 但这没有用。

XmlSerializer 是否忽略了 [XmlText] 上的 OrdersXml 属性,或者这不是 [XmlText] 的目的?

像这样组合 XML 的“正确”最佳实践方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)