问题标签 [xmlignore]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - XmlIgnoreAttribute,只在序列化时使用,反序列化时不使用?
我对 .NET XmlIgnoreAttribute的理解是否正确,它说:
指示 XmlSerializer 的 Serialize 方法不要序列化公共字段或公共读/写属性值。
那:
- 该属性将被反序列化,如果存在于 XML 文件中?
- 该属性不会被序列化为新的 XML 文件吗?
我问的原因是我已将文件中的属性替换为具有更多选项的新属性。旧属性是一个简单的布尔属性,而新属性是一个枚举。我已经更改了旧属性,以便它将新属性的值转换为布尔值,根据我添加新属性之前旧属性的含义,get 和 set 都已实现。
这使我可以通过读取设置新属性的旧属性来静默升级新文件,并在序列化时添加新属性。
但是,我想从新的 xml 文件中删除旧的属性,所以我想知道如果我用 标记它会发生什么[XmlIgnore]
,旧的 xml 文件仍然会正确反序列化并从文件中读取该属性,还是会被完全忽略?
如果没有,以下更改会做我想要的吗?
这将为所有新对象返回 false,由于我指定了默认值,因此将被忽略,如果存在于旧文件中并设置为 true,则会更改 ListHandling 属性,这是重要的新属性。
编辑:经过测试,我已经验证这两种方法似乎都可以满足我的要求。不过我会留下这个问题,因为我仍然想知道上面提到的第一个行为是否只是一个实现细节,或者是否可以这样理解文档。
c# - 使用基类了解 System.Xml.Serialization.XmlIgnoreAttribute
我有两个类,如下所示:
当我序列化和实例时,SomeDerived
我不希望看到SomeProperty
. 不过,我愿意。我尝试过其他方法,例如SomeProperty
声明为virtual
inSomeBase
并将其覆盖在SomeDerived
. 我仍然在SomeDerived
.
谁能解释一下是怎么回事XmlIgnoreAttribute
?
为了完整起见,我的反序列化代码如下
编辑
如果我将序列化程序声明更改为new XmlSerializer(typeof(SomeDerived))
.
c# - Serialization How to dynamicly ignore all members of a specific type
I want to ignore all elements of Dictionary while serializing as those members cause an exception
example class:
What i tried(unsuccessfull)
c# - C# Attribute XmlIgnore 和 XamlWriter 类 - XmlIgnore 不起作用
我有一个类,包含一个Brush MyBrush
标记为[XmlIgnore]
. 然而,它在流中被序列化,在尝试通过读取时造成麻烦XamlReader
。
我做了一些测试,例如当改变属性的可见性(到内部)时,它在流中消失了。不幸的是,在我的特定情况下,我无法做到这一点。
- 有没有人有同样的问题?
- 你有什么办法解决这个问题吗?
备注:据我所知,C# 4.0
这是我的单元测试中的一种方法,我在其中测试XamlSerialization
:
在我的一门课程中,我使用了 Property Brush
。在上面的代码中,这个单元测试失败了,因为Brush
值是一个对象(不可序列化)。当我删除 Setter(如下所示)时,单元测试通过。
使用XmlWriter
(与上述基本相同的测试)它可以工作。在StringBuffer sb
我可以看到,Property Brush
当 Setter 存在而不是被移除时,它是序列化的(很可能是另一个检查忽略了属性,因为没有设置器)。其他属性[XmlIgnore]
按预期忽略。
c# - XmlIgnore 不起作用
我有一个我正在尝试序列化的对象,输出看起来像这样:
其中 Item 是类根使用的类。
在某些情况下,我想忽略 value 的值,我有这段代码
但该值仍写入输出中。
我究竟做错了什么?
asp.net-mvc-3 - MVC3 应用程序
我正在开发一个 MVC3 应用程序。我通过 ADO.NET DbContext Generator 创建了我的 POCO 类,并且我使用部分类来添加属性验证。现在,当我尝试序列化我的一个实体时,我收到此错误:
“无法序列化成员....类型为'System.Collections.Generic.ICollection`1 [.....”
我用谷歌搜索了这个错误,发现可以将标签添加
[XmlIgnore]
到某些属性。但关键是我不能把这个标签放在属性上,因为它们每次都是由生成器创建的。那么我怎样才能以更简单的方式做到这一点呢?
c# - 忽略 XML 序列化中的空值
我有一块看起来像
如您所见,SubscriptionProductIdentifierType 是一个集合,在这种情况下仅包含一项。
如何忽略第二个空项目?
我尝试添加 xml 忽略,但是它会删除整个集合,如果没有数据,我只希望删除集合中的第二项。
任何帮助将不胜感激。
亲切的问候扎尔
c# - 在嵌套属性上使用 XmlAttributeOverrides
我正在尝试使用 XmlAttributeOverrides 来控制在类被序列化后哪些类属性出现在 xml 中。它适用于“根”类上的属性,但不适用于嵌套属性。这是一个简单的示例来说明我要完成的工作。
我的类层次结构如下:
当我序列化 Main() 时,我得到如下信息:
我能做的是通过使用这个来防止出现名称或地址:
我还需要做的是让 Main.Address.ContactInfo 有时不被序列化(如果它是空的)。我尝试了以下方法,但没有奏效:
和...
实际上,我已经尝试了很多,包括使用 XPath 语句来指定要定位的属性名称,但不想在尝试失败时填满此页面。通过这种方法,我要问的甚至是可能的吗?
c# - XmlIgnore 仅在序列化中
PasswordEncryptor
是我调用Encode
方法进行编码的类。编码后Password
,将其序列化为XmlSerializer
磁盘中的文件。但是,每次程序启动时,都会对文件进行反序列化,并在set
中再次对文件进行PasswordEncryptor.Encode()
编码Password
。有没有办法[XmlIgnore]
只在反序列化中?
c# - xml序列化属性
只有当成员不为空时,类成员是否有一个 xml 序列化属性来序列化该成员?如果成员为空,我需要类似的东西,该成员应该表现得像它具有属性XmlIgnore
?
问候