3

我正在尝试通过使用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.ReplaceReplace("&lt;", "<").Replace("&gt;", ">");

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

4

2 回答 2

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();
    }
}
于 2012-06-06T14:43:06.397 回答
0

手动更换它是不必要的。我认为最好的方法是使用System.XML.XmlWriter.WriteString类。在此处查找类定义

于 2012-06-06T14:38:39.020 回答