序列化c#属性时,将父节点放在前面
本文关键字:父节点 在前面 属性 序列化 | 更新日期: 2023-09-27 17:54:16
我想将以下类序列化为xml:
public class Survey
{
[XmlElement("edit")]
public string EditLink { get; set; }
}
正如预期的那样,这序列化为(删除了对问题不重要的额外内容)
<Survey><edit>http://example.com/editlink</edit></Survey>
但是,我想在编辑节点前添加一个父节点,因此生成的xml是:
<Survey><links><edit>http://example.com/editlink</edit></links></Survey>
是否有一种方法可以只使用序列化属性而不修改类的结构?
这个结构不能。如果您将EditLink
暴露为集合,则可以:
public class Survey
{
[XmlArray("links")]
[XmlArrayItem("edit")]
public string[] edit
{
get
{
return new [] {EditLink};
}
set
{
EditLink = value[0];
}
}
[XmlIgnore]
public string EditLink { get; set; }
}
收益率:
<Survey>
<links>
<edit>http://example.com/editlink</edit>
</links>
</Survey>
您可以尝试使用XMLSerializer类。
public class Survey
{
public string EditLink { get; set; }
}
private void SerializeSurvey()
{
XmlSerializer serializer = new XmlSerializer(typeof(Survey));
Survey survey = new Survey(){EditLink=""};
// Create an XmlTextWriter using a FileStream.
Stream fs = new FileStream(filename, FileMode.Create);
XmlWriter writer = new XmlTextWriter(fs, Encoding.Unicode);
// Serialize using the XmlTextWriter.
serializer.Serialize(writer, survey);
writer.Close();
}