我正在尝试使用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...>
之类的值,因此当我序列化模型时,我得到的是<option...>
而不是<option...>
我可以使用string.Replace
方法解决问题:Replace("<", "<").Replace(">", ">");
是否有一种干净的方法可以在不使用string.Replace
的情况下获得预期结果?
答案 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