代码之家  ›  专栏  ›  技术社区  ›  Eoin Campbell

如何忽略[XMLIgnore]属性

  •  7
  • Eoin Campbell  · 技术社区  · 17 年前

    我正在尝试将从第三方.NET库获取的一些对象序列化为XML文件。

    当我 Go To Definition 对于该对象,该对象的某些属性标记为 [XMLIgnore]

    有没有办法告诉我 System.Xml.Serialization.XmlSerializer 忽略某些属性具有该属性并且应该序列化对象中的所有内容这一事实。

    我可能可以获得源代码并重新编译它,而无需 XMLIgnore 但是如果 XmlSerializer

    XmlSerializer xmls = new XmlSerializer(
       typeof(MyObject),
       Settings.DoNotApplyXMLAttributeRules
    );
    

    提前谢谢


    已经尝试过建议的XmlAttributeOverrides,但没有多少乐趣。

    [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 回复  |  直到 17 年前
        1
  •  14
  •   manji    17 年前

    使用:

    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

    ((见第一注))