我正在尝试将从第三方.NET Lib获取的一些对象序列化为XML文件。
当我Go To Definition
对象时,该对象的某些属性标记为[XMLIgnore]
有没有办法告诉我的System.Xml.Serialization.XmlSerializer
忽略一些属性具有该属性的事实,并且它应该序列化对象中的所有内容。
我可能会获得源代码并在没有XMLIgnore
属性的情况下重新编译它,但如果XmlSerializer
有一些很好的覆盖属性,那就好了
XmlSerializer xmls = new XmlSerializer(
typeof(MyObject),
Settings.DoNotApplyXMLAttributeRules
);
提前致谢
修改
按照建议尝试了XmlAttributeOverrides但没有太多的乐趣。 这是对象定义(来自FlickrAPI for a Photo)
[Serializable]
public class Photo
{
//Some code omitted
[XmlIgnore]
public string LargeUrl { get; }
}
继续我写的序列化代码......仍然不起作用......
XmlWriter xtw = XmlWriter.Create( Server.MapPath("~/App_Data/Data.xml") );
XmlAttributes photoAttributes = new XmlAttributes();
photoAttributes.XmlIgnore = false;
XmlAttributeOverrides photoOverrides = new XmlAttributeOverrides();
photoOverrides.Add(typeof(Photo), "LargeUrl", photoAttributes);
XmlSerializer xmlphoto = new XmlSerializer(typeof(Photo), photoOverrides);
答案 0 :(得分:12)
使用:
XmlAttributeOverrides
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlattributes.xmlignore.aspx
编辑:(编辑问题后)
该属性必须是公共的,并且具有要序列化的getter和setter。
http://msdn.microsoft.com/en-us/library/182eeyhh%28VS.85%29.aspx
((见第一注))