C# XML序列化和<&引用&引用&燃气轮机&引用;生成HTML文档时

C# XML序列化和<&引用&引用&燃气轮机&引用;生成HTML文档时,c#,html,serialization,xmlserializer,xml-encoding,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")]

我正试图通过使用
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
属性可以有一个标签作为值,如
,因此当我序列化我的模型时,我会得到
选项…
而不是

我可以使用
string.Replace
方法解决这个问题,方法如下:
Replace(“,”)


是否有一种干净的方法可以在不使用
字符串的情况下获得预期的结果。替换

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

您可以创建另一个属性,该属性将
名称
公开为
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();
    }
}
[XmlIgnore]
公共字符串名称{get;set;}
[XmlElement(“span”)]
公共XmlNode指定ASXML
{
得到
{
XmlDocument doc=新的XmlDocument();
doc.InnerXml=“”+此名称+”;
返回doc.DocumentElement.FirstChild;
}
设置
{
抛出新的NotSupportedException();
}
}

XML!=HTML。大多数XHTML工作已经停止了,好吧。反序列化在这里如何工作?序列化对象将不会在此处使用相同的信息进行反序列化。@Nenotlep:OP的方案不需要反序列化,因此我没有费心实现属性设置器。为此,只需将
value.OuterXml
分配给
this.Designation
,而不是引发异常。