Eoi*_*ell 8 .net c# xml xml-serialization .net-3.5
我正在尝试将从第三方.NET Lib获得的一些对象序列化为XML文件.
当我Go To Definition为对象时,该对象的某些属性被标记为[XMLIgnore]
有没有办法告诉我System.Xml.Serialization.XmlSerializer忽略一些属性具有该属性并且应该序列化对象中的所有内容的事实.
我可能获得源代码并重新编译它没有XMLIgnore属性,但如果XmlSerializer有一些很好的覆盖属性,它会很好
XmlSerializer xmls = new XmlSerializer(
typeof(MyObject),
Settings.DoNotApplyXMLAttributeRules
);
Run Code Online (Sandbox Code Playgroud)
提前致谢
编辑
已按照建议尝试了XmlAttributeOverrides但没有太多的乐趣.这是对象定义(来自FlickrAPI的照片)
[Serializable]
public class Photo
{
//Some code omitted
[XmlIgnore]
public string LargeUrl { get; }
}
Run Code Online (Sandbox Code Playgroud)
继承了我写过的序列化代码......仍然无效......
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);
Run Code Online (Sandbox Code Playgroud)
man*_*nji 13
使用:
XmlAttributeOverrides
Run Code Online (Sandbox Code Playgroud)
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
((见第一注))