Tag: xmlserializer

.net XmlSerialize抛出“无法在使用ConformanceLevel.Fragment创建的编写器上调用WriteStartDocument”

我试图序列化一个类,将XML文件写为多个片段,即将该类的每个对象写为单个片段,而不使用XML头/根。 以下是示例代码: [Serializable] public class Test { public int X { get; set; } public String Y { get; set; } public String[] Z { get; set; } public Test() { } public Test(int x, String y, String[] z) { X = x; Y = y; Z = z; } } class Program { static […]

XmlRootAttribute是可inheritance的吗?

我有一个我用C#的XmlSerializer序列化的类。 它标有XmlRoot属性,我想在派生类中inheritance此属性。 查看文档时,它没有说XmlRoot使用AttributeUsageAttribute将Inherit设置为false(Inherit应该默认为true),但是在尝试反序列化没有XmlRoot属性的inheritance类时出错(“没想到。“)。 这目前有效: [Serializable()] [XmlRoot(“rootNode”)] public class BaseClass { [XmlAttribute(“attributeA”)] public int A { get; set; } } [Serializable()] [XmlRoot(“rootNode”)] public class InheritedClass : BaseClass { [XmlElement(“elementB”)] public int B { get; set; } } 这不起作用,但我想要的是: [Serializable()] [XmlRoot(“rootNode”)] public class BaseClass { [XmlAttribute(“attributeA”)] public int A { get; set; } } [Serializable()] public class […]

XmlSerializer忽略WebApi中的

我有一个返回一个简单对象的WebApi,但当我强制它以XML格式返回( Accept: application/xml )时,它忽略了我在对象上设置的[XmlAttribute]属性。 这是我的目标: public class Foo { [XmlAttribute] public string Bar { get; set; } } 我在代码中将其返回: [RoutePrefix(“api/mytest”)] public class MyTestController : System.Web.Http.ApiController { [HttpGet] [Route(“gettest”)] public Foo GetTest() { return new Foo() { Bar = “foobar” }; } } 生成的XML是: foobar 而我希望它会像这样返回: 为什么WebApi使用的XmlSerializer忽略[XmlAttribute]属性,如何让它像我想的那样工作?

C#将XML反序列化为对象

将一些xml反序列化为C#中的对象时遇到问题。 我收到的错误是…… xmlns=”> was not expected. 我收到的用于生成课程的XSD如下…… Liste des avis de remboursements Avis de remboursement lié à une DC (剪断) 我尝试导入的文件如下: 2010-06-22 25.0 0.0 25.0 0.0 0.0 0.0 0 C 319984 030 (剪断) 我认为正在发生的事情是,当.Net尝试对xml进行去磁化时,它会触及包含“xmlns:ast”的第一行并对其进行投诉。 据我所知,.Net将尝试将属性映射到目标类中的公共属性(并且它不会找到一个名为xmlns。或者我如何处理名称空间有问题。 我的反序列化代码如下所示: XmlDocument _Doc = new XmlDocument(); _Doc.Load(@”C:\inputfile.xml”); XmlSerializer _XMLSer = new XmlSerializer(typeof(ListeAvisRemboursements)); ListeAvisRemboursements _X = (ListeAvisRemboursements)_XMLSer.Deserialize(new StringReader(_Doc.OuterXml)); 我还尝试了将命名空间管理器添加到XML文档的各种组合。 XmlNamespaceManager _Ns […]

XML属性没有获取名称空间前缀

我需要在序列化期间生成以下XML :(片段) 2013-12-18 00:15:28 有问题的类看起来像这样: public class IncidentEvent { public string EventDate { get; set; } public string EventTime { get; set; } [XmlAttribute(“EventTypeText”, Namespace = “http://foo”)] public string EventTypeText { get; set; } } 似乎序列化程序注意到命名空间已经在xmlns:在根目录中声明,并且忽略了我的属性。 我也尝试了以下内容: [XmlRoot(Namespace = “http://foo”)] public class IncidentEvent { public string EventDate { get; set; } public string EventTime { […]

XML反序列化仅适用于xml中的命名空间

我使ServiceStack xml反序列化工作的最简单方法是xml包含命名空间。 但是,我收到的xml不包含名称空间。 最简单的工作示例: [Serializable] public class test { } class Program { static void Main(string[] args) { string xml=””; var result = ServiceStack.Text.XmlSerializer.DeserializeFromString(xml); } } 但是,这不是我想要的。 我希望以下代码反序列化,因为这是我从几个服务获得的xml: string xml=””; 但这给了我以下错误: DeserializeDataContract: Error converting type: Error in line 1 position 7. Expecting element ‘test’ from namespace ‘http://schemas.datacontract.org/2004/07/’.. Encountered ‘Element’ with name ‘test’, namespace ”. 我试过了: […]

将通用对象序列化为SOAP格式的流的扩展方法

我很难想出一个将SOAP格式化的给定对象序列化的通用扩展方法。 实际的实现看起来像这样: Foobar.cs [Serializable, XmlRoot(“foobar”), DataContract] public class Foobar { [XmlAttribute(“foo”), DataMember] public string Foo { get; set; } [XmlAttribute(“bar”), DataMember] public string Bar { get; set; } public Foobar() {} } Lipsum.cs [Serializable, XmlRoot(“lipsum”), XmlType(“lipsum”), DataContract] public class Lipsum { private List lipsum = new List(); [XmlElement(“foobar”), DataMember] public List Lipsum { get { […]

使用XmlSerializer反序列化随机/未知类型

我正在使用XmlSerializer与服务进行通信。 这不是常规的SOAP服务,它有自己的XML对象类型。 例如,我可能会要求对象,但它可能会返回 。 所以,换句话说,我必须处理随机的XML文档类型。 但是,我知道我必须处理哪些类型。 我想要做的是找到一个通用的方法来序列化/反序列化这些文档。 问题是XmlSerializer需要在创建阶段知道类型。 这些不是封装在公共根元素中,因此在这种情况下,创建基类并使用[XmlInclude]属性不起作用: [XmlInclude(typeof(Exception))] [XmlInclude(typeof(Capabilities))] public abstract class BaseClass { public BaseClass() { SchemaLocation = “test”; } [XmlAttribute(“schemaLocation”)] public String SchemaLocation { get; set; } } [XmlRoot(“Exception”)] public class Exception : BaseClass { public Exception():base() { } [XmlElement] public String Message { set; get; } } [XmlRoot(“Capabilities”)] public class […]

XML序列化 – 何时使用DataContractSerializer / Binary / XMLSerialiser

我已经看了一会儿了 似乎不鼓励使用二进制序列化,因为对字段名称的任何更改都会破坏序列化=? 不好 XMLSerializer是有问题的,因为您必须提供无参数构造函数和公共字段,尽管您可以更多地控制元素是属性或元素及其命名 DataContractSerializer很好,但需要明确添加所有的分类,这是一种耻辱 但是我偶然发现NetDataContractSerializer没有这个限制。 如果你的目标是C#序列化并且对xml的大小没有很大的限制,那么NetDataContractSerializer总是可以去这里吗?

无法加载文件或程序集’MyAssembly.XmlSerializers

我采取了IIS的内存转储,并在分析时发现了“无法加载文件或程序集MyAssemblyName.XmlSerializers”的错误 。 在我的代码中,我使用XmlSerializer类将xml文件中的xml内容序列化和反序列化为自定义对象。 当项目构建时,它只创建MyAssembly.dll和MyAssembly.pdb文件,但不创建MyAssembly.XmlSerializers.dll。 有谁知道如何启用我的项目来创建xmlserializers.dll文件? 注意:在项目构建选项卡中,“生成序列化程序集”设置为“自动”。 谢谢。