问题标签 [xmlserializer]
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 - XmlSerializer 属性反序列化顺序
只是想知道是否有人知道 XmlSerializer 如何确定反序列化任何给定对象属性的顺序。
添加信息:
我有这样的课:
我在 Gaps setter 和 HasGaps setter 中都设置了一个断点,Gaps 首先被反序列化。
更多信息
下面是 XML 的样子:
c# - C# XmlSerializer 绑定失败
我在使用 XmlSerializer 的代码行上得到了 BindingFailure:
显示名称为 CustomXMLSerializeObject.XmlSerializers 的程序集未能加载到 ID 为 1 的 AppDomain 的“LoadFrom”绑定上下文中。失败的原因是:System.IO.FileNotFoundException:无法加载文件或程序集 XMLSerializeObject.XmlSerializers,版本=1.4.0.0, Culture=neutral, PublicKeyToken=null' 或其依赖项之一。该系统找不到指定的文件。
该错误很长,并继续解释预绑定状态信息以及它试图查找文件的位置。
我试图反序列化的自定义对象相对简单——只是一堆具有公共访问器的私有整数和字符串。我确实有一个私有变量,它是另一个自定义的可序列化类,但它只有带有公共访问器的私有字符串。
尴尬的部分?这只发生在我反序列化时。当我序列化对象时,那行代码运行良好。它工作正常,对象被反序列化并完美填充。不要真正注意到任何性能损失或加载时间过长。
这个警告到底是什么(不是错误或异常,之后程序运行良好)?为什么会这样?如何在不简单禁用警告的情况下防止它?
c# - XmlSerializer 列表项元素名称
我有一堂课PersonList
当我将其序列化为 XML 时,默认情况下它将产生如下内容:
我的问题是需要做什么才能将元素更改Human
为Person
输出?所以输出将是:
以及,如何将上述 XML 反序列化为PersonList
类对象?
根据尼克的建议,这是我的测试代码:
测试代码的输出是:
如输出所示,[XmlRoot("Person")]
onHuman
不会将标签更改为Person
from Human
。
c# - XML 序列化和命名空间前缀
我正在寻找一种使用 C# 的方法,我可以将一个类序列化为 XML 并添加一个命名空间,但定义该命名空间将使用的前缀。
最终,我试图生成以下 XML:
我知道我可以添加一个命名空间,但它们似乎DataContractSerializer
在XmlSerializer
内部生成一个前缀,这是我无法控制的。我可以使用这些序列化程序中的任何一个来控制它(我可以使用它们中的任何一个)吗?
如果我无法控制命名空间的生成,我是否需要编写自己的 XML 序列化程序,如果是这样,最好的方法是什么?
c# - XmlSerializer 在使用泛型类型约束时抛出 InvalidOperationException
当我尝试运行以下代码时(两个分开的程序集)
类库.cs
程序.cs
使用以下命令在 Windows 7 64 位中编译:
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /target:library ClassLibrary.cs
c:\Windows\Microsoft.NET\Framework\v2.0.50727\csc /reference:ClassLibrary.dll Program.cs
我得到了这个例外:
System.InvalidOperationException:无法生成临时类(结果 = 1)。错误 CS0012:类型 ITest 在未引用的程序集中定义。您必须添加对程序集 ClassLibrary、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null hinzu 的引用。
在 System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) 在 System.Xml.Serialization.XmlSerializer.GenerateTempAssembly 的 XmlSerializerCompilerParameters 参数、程序集程序集、哈希表程序集(XmlMapping xmlMapping, Type type, String defaultNamespace) at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace) at Program.Main(String[] args)
从TestClass中删除where T : ITest或根本不使用泛型(例如使用public void Test(ITest x))将防止抛出异常,但我在实际应用程序中需要这个构造。
有人明白为什么 XmlSerializer 无法处理 where 约束吗?
c# - 为什么 XmlReader 将命名空间 uris 附加到每个元素?
我有一个包含以下格式的 xml 的流,我想将其反序列化为 C# 对象
我已经用字符串完成了很多次,但是对于流,它会将命名空间属性附加到所有复杂元素。如果我只是删除 xmlns 属性,而忘记根据模式验证它,它只会附加一个空的 xmlns 属性。我遇到的问题是 XmlSerializer (?)中的 Deserialize 方法抛出一个错误,说它不需要该属性。我尝试使用 XmlRoot 和 XmlType 属性来装饰类,但这并没有改变任何东西。
这是我要反序列化的类
这是用于完成工作的方法
我已经使用 DataContractSerializer 尝试过这个,但这带来了它自己的学习机会,所以如果有人可以帮助我应该在属性中添加什么来让 XmlSerializer 工作,那就太好了。
任何帮助将不胜感激,谢谢。
c# - 如何验证 XmlSerializer 的输出?
在 C#/.NET 2.0 中,当我使用XmlSerializer序列化对象时,根据 XML 模式验证输出的最简单方法是什么?
问题是使用 XmlSerializer 编写无效 XML 太容易了,而且我找不到一种方法来验证看起来不麻烦的 XML。理想情况下,我希望在 XmlSerializer 中设置架构或拥有一个验证的 XmlWriter。
.net - XmlSerializer.Deserialize() is too slow with files over 1MB - .Net compact framework 3.5 sp1
I got a XML schema for which I used xsd.exe to generate a Class FooClass
.
I am receiving xml requests from host which I get them from a directory and use the XmlSerializer.Deserialize()
to get a Instance of my FooClass
.
Well, this worked till now perfectly and it still does, but suddenly I started to get XML files which are larger (about 300KB) and the time which it takes to Deserialize()
is not acceptable! Loading the same XML file with XMLTextReader()
takes milliseconds and the time to deserialize is about 1 minute and 30 seconds!
So I thought I'll use the XMLReader to read the XML file and build FooClass
by myself!
But before I start to rework all my code, I would like to ask you if there is a way to use XmlSerializer.Deserialize()
which would be faster?
I am not sure if XMLSerializer Assembly would help me much here?
here is my code which will be called in a Loop for each file
Thanks in advance, AK
.net - 使用 XmlSerializer.Deserialize 处理 FormatExceptions
我有一个返回此 xml 的第三方 Web 服务
我正在尝试将其反序列化为此类
但因为0000-00-00
不是有效的DateTime
,我得到一个 FormatException。处理这个问题的最佳方法是什么?
c# - 如何使用 XMLSerializer 添加没有前缀的默认命名空间
我正在尝试生成一个 XML 文档,其中包含没有使用前缀的默认命名空间XmlSerializer
,例如
使用以下代码...
和班级结构...
现在,我尝试了各种选择...
或者 ...
给我 ...
我需要 XML 具有不带前缀的命名空间,因为它会发送给第三方提供商,并且他们拒绝所有其他替代方案。