我有一个节点,它可以包含text或xml、text+xml或text+xml+text。我解决的前两个案子

    [XmlAnyElement]
    [EditorBrowsable(EditorBrowsableState.Never)]
    public XmlElement[] TextNodes { get; set; }

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

    [XmlIgnore]
    public string Text
    {
        get
        {
            return String.Format("{0}{1}", InnerText, TextNodes.Aggregate(String.Empty, (current, documentNode) => current + documentNode.OuterXml));
        }
    }

但是,最后一种情况是在XML之后有文本,我找不到解决方案。
XML
<node>
 somtext <p>moretext</p> even more text
</node>

我的代码将以文本形式输出:
sometext <p>moretext</p>

我需要:
sometext <p>moretext</p> even more text

最佳答案

所需的内容称为混合内容,并在XmlSerializer中受支持。
像这样写你的课

[Serializable]
public class TestClass
{
    [XmlText(typeof(string))]
    [XmlAnyElement]
    public object[] Items { get; set; }
}

并将所有元素放在同一个对象数组中

关于c# - XmlSerializer-包含文本+ xml +文本的节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25995609/

10-17 03:02