XML序列化和"<" ,">"生成HTML文档时

时间:2012-06-06 14:30:56

标签: c# html serialization xmlserializer xml-encoding

我正在尝试使用XmlSerializer和一组这样的类动态生成HTML表格:

[XmlInclude(typeof(Th))]
public class Td
{
    [XmlElement("span")]
    public string Designation { get; set; }

    [XmlAttribute("colspan")]
    public int ColSpan { get; set; }

    [XmlAttribute("rowspan")]
    public int RowSpan { get; set; }

    public Td(string designation, int colspan)
    {
        Designation = designation;
        ColSpan = colspan;
        RowSpan = 1;
    }

    public Td()
    {            
    }

}

这里的问题是Designation属性可以将标记设置为<option...>之类的值,因此当我序列化模型时,我得到的是&lt;option...&gt;而不是<option...>

我可以使用string.Replace方法解决问题:Replace("&lt;", "<").Replace("&gt;", ">");

是否有一种干净的方法可以在不使用string.Replace的情况下获得预期结果?

2 个答案:

答案 0 :(得分:2)

您可以创建另一个将Designation公开为XmlNode

的属性
[XmlIgnore]
public string Designation { get; set; }

[XmlElement("span")]
public XmlNode DesignationAsXml
{
    get
    {
        XmlDocument doc = new XmlDocument();
        doc.InnerXml = "<root>" + this.Designation + "</root>";
        return doc.DocumentElement.FirstChild;
    }
    set
    {
        throw new NotSupportedException();
    }
}

答案 1 :(得分:0)

手动更换它是不必要的。  我认为最好的方法是使用System.XML.XmlWriter.WriteString类。寻找班级定义here