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

时间:2011-09-11 00:17:48

标签: c# xml-serialization

是否可以使用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; }
}

1 个答案:

答案 0 :(得分:0)

您不能将非原始类型用于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数组开头的textType对象Items,其中Value为&#34;示例&#34;