Tag: xsd.exe

如何使用包含相同元素/类的different.xsd命名空间?

我有点理解我应该如何使用xml文件,所以我希望你们可以指导我正确的dirrection :)希望我能解释我的问题清楚:) 我有很多.xsd文件都是从上到下连接的。 所以我有10个带有命名空间A的.xsd和带有命名空间B的10个.xsd。让我们说两个命名空间代表每个自己的汽车。 这意味着它们共享许多相同的元素,如引擎,滚轮等。我认为我可以使用xsd.exe,然后只需在我的C#代码中序列化xml文件。 但是,当我将.xsd文件转换为两个.cs文件(每个命名空间/汽车一个)时,它们共享许多相同的类。 当我想将两个.cs文件添加到我的项目时,这会产生问题。 不能有两个同名的class级…我该如何解决这个问题? 我使用错误的工具还是完全误解了我应该做什么? 🙂 .cs文件的开头: //—————————————————————————— // // This code was generated by a tool. // Runtime Version:4.0.30319.261 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //—————————————————————————— using System.Xml.Serialization; // // This source code was auto-generated […]

手动创建要映射到XML请求响应的类

我被指派实现一个使用XML请求/响应的API的接口。 API提供程序不为XML调用提供任何xsd(s)。 我使用xsd.exe生成了C#类:.xml – > .xsd – > .cs但是,我没有发现生成的类令人满意,因为调用包含很多列表,xsd.exe无法正常处理。 我是否应该手动创建并映射到所有请求/响应的类? 这可能有助于以后轻松维护代码。 或者我应该只使用.Net提供的Xml类,并编写方法来创建XML请求/响应? 这将花费更少的时间,但在维护阶段可能会变得艰难。 这是我为相应的XML元素创建的示例类: XML元素 相应的课程 internal class ProductElement : IElement { private const string ElementName = “Product”; private const string IdAttribute = “ID”; private const string DescriptionAttribute = “Description”; private const string NonRefundableAttribute = “NonRefundable”; private const string StartDateAttribute = “StartDate”; private const string […]

我如何使用Windows 10通用应用程序中的xsd.exe生成的文件

我使用xsd.exe从.xsd文件生成.cs文件。 但是当我将文件添加到Windows 10通用空白应用程序时,我收到的错误是“缺少System.SerializableAttribute()和System.ComponentModel.DesignerCategoryAttribute(”code“)的程序集引用。 我通过@t.ouvre的技巧解决了这个问题。 然后在代码的任何特定行中没有错误,但是当我构建代码时,我收到一条错误,说“无法在模块System.dll中找到类型System.ComponentModel.MarshalByValueComponent”并且它没有完全指定错误在哪里。 如何在Windows 10通用应用程序中使用xsd.exe生成的文件? 我需要对文件进行序列化和反序列化的所有事情是什么(在UWP中使用DataContractSerializer) /// [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”, “4.6.81.0”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)] [System.Xml.Serialization.XmlRootAttribute(Namespace = “”, IsNullable = false)] public partial class request { private usertype userField; private string versionField; /// [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified)] public usertype user { get { return this.userField; } set { this.userField = value; } } /// […]

XML序列化可选属性的默认值

我有一组使用xsd.exe构建的类,我正在尝试序列化它们。 但是,生成的XML中不包含属性。 以下是问题所在的架构的一部分。 /* sequence removed for brevity */ xsd.exe在“Widget”类和另一个名为“VersionSpecified”的属性上生成了一个名为“Version”的属性,但是当我序列化时,即使设置为true,这似乎也不会生成属性: [XmlAttributeAttribute] [DefaultValueAttribute(Version.Version_1_1)] public Version Version { get; set; } [Serialization.XmlIgnoreAttribute] public bool VersionSpecified { get; set; } 这是它所基于的枚举: /// [GeneratedCodeAttribute(“xsd”, “2.0.50727.3038”)] [Serializable] public enum Version { [XmlEnumAttribute(“1.0”)] Version_1_0, [XmlEnumAttribute(“1.1”)] Version_1_1, } 根据请求的代码段 Widget widget = new Widget(); widget.Version = Version.Version_1_1; widget.VersionSpecified = true; XmlSerializer serializer […]

防止DebuggerStepThroughAttribute应用于我的非xsd生成的分部类?

我使用xsd.exe工具根据我的xml架构生成一个类。 它使用DebuggerStepThroughAttribute创建了一个公共部分类。 好吧,我为这个类创建了另一个部分类文件来编写我的自定义代码,并且希望能够逐步进入我编写的代码,但看起来调试器也将步进属性应用于我的部分类。 我是否有一种简单的方法可以逐步进入我的代码,而无需在每次重新生成分部类时手动删除属性?

使用xsd.exe生成类的可空值

我一直在使用xsd.exe生成一个用于反序列化XML的类。 我在源xsd中有十进制值,这是不需要的: xsd生成的类生成以下代码: private decimal balanceField; [System.Xml.Serialization.XmlAttributeAttribute()] public decimal Balance { get { return this.balanceField; } set { this.balanceField = value; } } 我注意到它不可空。 我如何生成可为空的字段,如下所示: private decimal? balanceField; [System.Xml.Serialization.XmlAttributeAttribute()] public decimal? Balance { get { return this.balanceField; } set { this.balanceField = value; } }

svcutil.exe是xsd.exe的替代品吗?

我正在使用xsd.exe从.xsd文件生成一些c#类。 我遇到了此处和其他网站上涉及的相同问题,其中xsd.exe生成Type []数组,而不是.xsd文件中类型的通用List集合。 有些人建议如果将/ dataContractOnly参数传递给svcutil.exe,svcutil.exe可以用作xsd.exe的替代品。 但是,似乎这些人都错了,因为svcutil.exe实际上生成了System.Xml.XmlNode []数组属性,而不是基于.xsd文件中的模式创建类型。 例如,给定这个简单的.xsd架构: ‘xsd.exe / classes Example.xsd’生成: public partial class Employees { private Employee[] employeeField; public Employee[] Employee { get { return this.employeeField; } set { this.employeeField = value; } } } public partial class Employee { private string firstNameField; private string lastNameField; public string FirstName { get { return […]

基于XSD创建MULTIPLE类文件

我可能正在尝试使用XSD工具无法实现的function,但在进入更简单的解决方案之前我想问一下。 我有一个XSD文件,有多个元素(和多个复杂类型),将在一个代码文件中生成多个类(我不喜欢这个)。 为了从XSD工具生成干净且可读的类文件,我希望将每个元素放在一个单独的代码文件中,而不是将所有元素放在一个代码文件中作为部分类。 有谁知道如何做到这一点? 或者,我唯一的解决方案是将XSD分解为模式中每个xml元素的一个模式? MSDN文章http://msdn.microsoft.com/en-us/library/x6c1kb0s(v=VS.100).aspx不提供指定是否可以完成此操作的语言。 提前感谢您的任何答案或评论。

XML反序列化到XSD生成的类中的麻烦

我有一个相当详细的xml文件。 下面是顶级节点(我已经包含了椭圆,因为较低级别的节点都已经很好地形成并且正确地填充了数据): … … 我使用Visual Studio 2008命令提示符创建了一个xsd文件: xsd sample.xml 这会很好地生成xsd文件。 然后我使用以下命令从xsd自动生成类: xsd sample.xsd /classes 为了将xml文件反序列化为类对象,我在helper类中使用了read函数: public class XmlSerializerHelper { public Type _type; public XmlSerializerHelper() { _type = typeof(T); } public void Save(string path, object obj) { using (TextWriter textWriter = new StreamWriter(path)) { XmlSerializer serializer = new XmlSerializer(_type); serializer.Serialize(textWriter, obj); } } public T Read(string […]

使用xsd.exe生成c#文件,获取错误和警告

这是我正在运行的命令: xsd.exe -c -l:c# D:\Documents\DEV\SARPilot\Docs\schemas\06-141r2\06-141r2.xsd 这些是我得到的错误: Microsoft (R) Xml Schemas/DataTypes support utility [Microsoft (R) .NET Framework, Version 2.0.50727.3038] Copyright (C) Microsoft Corporation. All rights reserved. Schema validation warning: Undefined complexType ‘http://www.opengis.net/sps/0:ParameterDescriptorType’ is used as a base for comp lex type extension. Line 617, position 2. Schema validation warning: Undefined complexType ‘http://www.opengis.net/ows:GetCapabilitiesType’ is used as a […]