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
,而不是引发异常。