如何反序列化嵌入在文本中的XHTML标记?

时间:2013-08-27 00:58:08

标签: c# serialization

我想使用XML序列化来反序化此HTML结构。

当我反序列化此结构时,H3对象的内容为测试之前,子节点包含<span class="red">Small</span>,但测试之后的值为丢失

以下结构在XHTML中有效,尽管它在XML中可能无效。

我知道其他人在这里问了一个类似的问题,C# how to deserialize an xml tag embedded in text但他们没有得到解决他们问题的工作答案。

    <div class="row-fluid">
      <h3>Test Before <span class="red">Small</span> Test After</h3>
      <h4>Header and Footer</h4>
    </div>

我知道一个可行的选项如下,但我正在跳跃某人有一个更好的技术,使用XML序列化程序

    <div class="row-fluid">
      <h3><![CDATA[[Test Before <span class="red">Small</span> Test After]]></h3>
      <h4>Header and Footer</h4>
    </div>

以下是我的XML序列化对象的一些示例

所有对象都来自

public abstract class BaseSlideDeckNodeDo
{
    protected BaseSlideDeckNodeDo()
    {
        CssClass = "";

        Nodes = new List<BaseSlideDeckNodeDo>();
    }

    [XmlAttribute("id")]
    public string Id { get; set; }

    [XmlAttribute("class")]
    public string CssClass { get; set; }

    [XmlAttribute("style")]
    public string Style { get; set; }

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


    [XmlElement("a", typeof(SlideDeckNodeADo))]
    [XmlElement("div", typeof(SlideDeckNodeDivDo))]
    [XmlElement("p", typeof(SlideDeckNodePDo))]
    [XmlElement("h1", typeof(SlideDeckNodeH1Do))]
    [XmlElement("h2", typeof(SlideDeckNodeH2Do))]
    [XmlElement("h3", typeof(SlideDeckNodeH3Do))]
    [XmlElement("h4", typeof(SlideDeckNodeH4Do))]
    [XmlElement("h5", typeof(SlideDeckNodeH5Do))]
    [XmlElement("h6", typeof(SlideDeckNodeH6Do))]
    [XmlElement("img", typeof(SlideDeckNodeImageDo))]
    [XmlElement("iframe", typeof(SlideDeckNodeIframeDo))]
    [XmlElement("video", typeof(SlideDeckNodeVideoDo))]
    [XmlElement("html", typeof(SlideDeckNodeHtmlDo))]
    [XmlElement("section", typeof(SlideDeckNodeSectionDo))]
    [XmlElement("span", typeof(SlideDeckNodeSpanDo))]
    public List<BaseSlideDeckNodeDo> Nodes { get; set; }
}

H3类的例子

public class SlideDeckNodeH3Do : BaseSlideDeckAnimatedNodeDo
{
}

Span类的示例

public class SlideDeckNodeSpanDo : BaseSlideDeckAnimatedNodeDo
{
}

0 个答案:

没有答案