如何忽略[XMLIgnore]属性

时间:2009-09-05 16:50:29

标签: c# .net xml .net-3.5 xml-serialization

我正在尝试将从第三方.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);

1 个答案:

答案 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

((见第一注))