天道酬勤,学无止境

xsd.exe

如何使用 XmlSerializer 类反序列化这个简单的 xml 配置?(How do I deserialize this simple xml config with the XmlSerializer class?)

问题 我有以下 xml 我想反序列化为一个类 <?xml version="1.0" encoding="utf-8" ?> <root> <element1>String1</element1> <element2>String2</element2> </root> 我正在尝试将其序列化为以下类: [XmlRoot("root")] public class root { [XmlElement("element1")] internal string element1 { get; set; } [XmlElement("element2")] internal string element2 { get; set; } } 当我尝试使用以下代码反序列化它时,配置对象被实例化,但字符串为空。 using (TextReader reader = new StreamReader(configFile)) { XmlSerializer serializer = new XmlSerializer(typeof(root)); this.config = (root)serializer.Deserialize(reader); } 我已经尝试使用 xsd.exe 创建一个 xsd,然后基于它创建一个类,但是该工具产生的混乱太多了。 我想我已经接近这里了。 我错过了什么?

2021-10-24 18:18:18    分类:技术分享    xml   xml-serialization   xsd.exe

How do I deserialize this simple xml config with the XmlSerializer class?

I have the following xml I'd like to deserialize into a class <?xml version="1.0" encoding="utf-8" ?> <root> <element1>String1</element1> <element2>String2</element2> </root> I am trying to serialize it into the following class: [XmlRoot("root")] public class root { [XmlElement("element1")] internal string element1 { get; set; } [XmlElement("element2")] internal string element2 { get; set; } } When I try deserializing it using the following code, the config object is instantiated, but the strings are null. using (TextReader reader = new StreamReader(configFile)) { XmlSerializer serializer =

2021-10-24 08:43:35    分类:问答    xml   xml-serialization   xsd.exe

从 xsd 生成 cXML 类会引发错误“元素 'uri:ds:Signature' 丢失。”(Generating cXML classes from xsd throws error "The element 'uri:ds:Signature' is missing.")

问题 我正在尝试按照 http://cxml.org/ XSD(由 Visual Studio 转换)为 cXML 1.2.034 版生成 cXML 类。 我将 cXML.dtd 转换为 xsd。 然后尝试运行: xsd.exe cXML.xsd /c /language:CS /n:MyNamespace 但它抛出了一个错误: Error: Error generating classes for schema 'cXML'. - The element 'uri:ds:Signature' is missing. 然后我在这里发现了这个问题:从 XSD 生成 C# 类,这似乎很相关。 所以我从 http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd 下载了xmldsig-core-schema.xsd 然后我跑了 xsd.exe cXML.xsd xmldsig-core-schema.xsd /c /language:CS /n:MyNamespace 但那扔了 Error: Error generating classes for schema 'cXML_xmldsig-core-schema'. - The element 'uri:ds:Signature' is missing. 我不知道“'uri:ds

2021-10-16 08:28:05    分类:技术分享    xml   xsd   dtd   xsd.exe   cxml

将 XML 日期时间反序列化为 UTC(Deserialize XML dateTime to UTC)

问题 我正在使用带有 XSD 元素的 XML Web 服务,例如: <xs:element nillable="true" type="xs:dateTime" name="ENDDATE"/> XML 可能如下所示: <ENDDATE>2016-08-01T18:35:49+04:00</ENDDATE> 我使用 XSD.exe 自动生成 C# 类,当我检查这些类时, DateTime对象将包含系统本地时间的时间, Kind==Local 。 有没有一种方法可以强制 DateTime 实例处于 UTC 时间,而无需手动破解每个此类字段的自动生成类(有很多)? 回答1 我认为您无法使用 XSD 调整此行为(请参阅此处)。 所以你应该更新(hack)自动生成的类并做一些像那里描述的事情: [XmlIgnore()] public DateTime Time { get; set; } [XmlElement(ElementName = "Time")] public string XmlTime { get { return XmlConvert.ToString(Time, XmlDateTimeSerializationMode.RoundtripKind); } set { Time = DateTimeOffset.Parse(value).DateTime; } } 或者

2021-10-15 01:48:46    分类:技术分享    c#   .net   xsd   xsd.exe

Deserialize XML dateTime to UTC

I am consuming an XML webservice with XSD elements such as: <xs:element nillable="true" type="xs:dateTime" name="ENDDATE"/> XML might look like the following: <ENDDATE>2016-08-01T18:35:49+04:00</ENDDATE> I used XSD.exe to autogenerate C# classes, when I inspect these the DateTime object will contain the time in system-local time, with Kind==Local. Is there a way I can force the DateTime instances to be in UTC time without manually hacking the auto-generated classes for every such field (there are rather a lot)?

2021-10-11 10:07:25    分类:问答    c#   .net   xsd   xsd.exe

XSD.exe - 如何初始化从 xs:choice 创建的类型(XSD.exe - How to initialize a type created from xs:choice)

问题 我对使用 XSD 和序列化反序列化还很陌生,我正在寻找一些关于如何初始化从 XSD 中的 xs:choice 元素创建的结果类对象的建议,这里有一些关于 XSD 的信息和对象类: 示例取自更大的 XSD 对象类。 XSD: <xs:element name="main-contact"> <xs:complexType> <xs:sequence> <xs:choice> <xs:element name="person"> <xs:complexType> <xs:group ref="person"/> </xs:complexType> </xs:element> <xs:element name="company"> <xs:complexType> <xs:group ref="company"/> </xs:complexType> </xs:element> </xs:choice> <xs:group ref="contact"/> </xs:sequence> </xs:complexType> </xs:element> <xs:group name="person"> <xs:sequence> <xs:element name="title" minOccurs="0"/> <xs:element name="salutation" minOccurs

2021-10-07 08:52:00    分类:技术分享    c#   serialization   xsd.exe

Generating cXML classes from xsd throws error "The element 'uri:ds:Signature' is missing."

I'm trying to generate cXML classes for version cXML 1.2.034 as per http://cxml.org/ XSD (converted by visual studio). I converted the cXML.dtd to xsd. Then Tried running: xsd.exe cXML.xsd /c /language:CS /n:MyNamespace But it threw an error: Error: Error generating classes for schema 'cXML'. - The element 'uri:ds:Signature' is missing. Then I found this issue here: Generating C# classes from XSD which seems relevant. So I downloaded xmldsig-core-schema.xsd from http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd Then I ran xsd.exe cXML.xsd xmldsig-core-schema.xsd /c /language:CS /n

2021-10-03 07:11:14    分类:问答    xml   xsd   dtd   xsd.exe   cxml

可选属性默认值的 XML 序列化(XML Serialization of the default values of optional attributes)

问题 我有一组使用 xsd.exe 构建的类,我正在尝试序列化它们。 但是,生成的 XML 中不包含属性。 这是问题所在的架构的一部分。 <xsd:element name="Widget"> <xsd:complexType> /* sequence removed for brevity */ <xsd:attribute name="Version" type="Version" use="optional" default="1.1"/> </xsd:complexType> </xsd:element> <xsd:simpleType name="Version"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1.0"/> <xsd:enumeration value="1.1"/> </xsd:restriction> </xsd:simpleType> xsd.exe 在“Widget”类上生成了一个名为“Version”的属性,并在另一个名为“VersionSpecified”的属性上生成了一个属性,但是当我序列化时,即使设置为 true,这似乎也不会生成该属性: [XmlAttributeAttribute] [DefaultValueAttribute(Version.Version_1

2021-09-29 22:12:24    分类:技术分享    c#   .net   serialization   xml-serialization   xsd.exe

XSD.exe 忽略简单的复杂类型(XSD.exe ignores simple complextypes)

问题 我们有一个很大的 wcf 服务和一个很大的 xsd 文档,其中有几个元素和复杂的类型。 我们使用 xsd.exe 生成代码,并使用 WCF 服务的ServiceContract上的XmlSerializerFormat再次序列化这些对象。 现在我们遇到了 xsd.exe 和字符串数组定义的问题。 图像我们定义了以下元素.. <xs:element name="Configuration" type="Configuration"/> <xs:complexType name="Configuration"> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Parameters" type="Parameters" /> </xs:sequence> </xs:complexType> <xs:complexType name="Parameters"> <xs:sequence> <xs:element name="Parameter" type="xs:string" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> 这将导致: /// <remarks/> [System.CodeDom.Compiler

2021-09-29 05:22:35    分类:技术分享    c#   wcf   xsd   xsd.exe

使用 xsd.exe 生成的类反序列化可为空值(Deserialization of nullable value with xsd.exe generated class)

问题 xsd.exe 生成类的可空值回答了为什么生成的类具有 *Specified 字段和属性,以及它如何用于序列化XML 文件,但我如何在反序列化期间设置此值? 我有一个生成的类,定义如下: /// <remarks/> [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.33440")] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.caiso.com/soa/2006-06-13/StandardOutput.xsd")] public partial class EventLog { private System.DateTime creationTimeField; private bool creationTimeFieldSpecified; /// <remarks/> public System.DateTime

2021-09-29 05:08:37    分类:技术分享    c#   visual-studio   xsd   xml-deserialization   xsd.exe