将XML混合内容中的文本反序列化为自定义对象

本文关键字:反序列化 文本 自定义 对象 XML 混合 | 更新日期: 2023-09-27 18:08:18

是否可能有一个XML,其中一个元素具有混合内容,并将混合元素中的文本反序列化为自定义对象而不是string ?

我试过了:

    [XmlText(typeof(textType))]
    [XmlElement("query", typeof(templateBodyQuery))]
    [XmlElement("expand", typeof(expandType))]
    [XmlElement("insert", typeof(expandTypeInsert))]
    public object[] Items { get; set; }

期望文本项将被序列化为textType,但我得到'textType' cannot be used as 'xml text'错误。

这是我的textType类:

public class textType
{
    [XmlText]
    public string Value { get; set; }
}

将XML混合内容中的文本反序列化为自定义对象

不能为XmlText使用非基本类型。此外,我不确定我理解xml将如何结构化,因为您不能在单个节点下拥有XmlText和XmlElements。

我认为这就是你想要做的:

[XmlElement("textType",typeof(textType))]
[XmlElement("query", typeof(templateBodyQuery))]
[XmlElement("expand", typeof(expandType))]
[XmlElement("insert", typeof(expandTypeInsert))]
public object[] Items { get; set; }

反序列化:

<Test>
    <textType>example</textType>
    <query>...</query>
    <expand>...</expand>
</Test>

到一个类Test,在Items数组的开始有一个textType对象,Value为"example"