Tag: xsd

为什么xsd.exe为xs:integer生成字符串属性?

当我使用xsd.exe从xsd模式生成ac#类时,我觉得这个行为有点奇怪。 我的元素: 生成为: [System.Xml.Serialization.XmlElementAttribute(DataType=”integer”, Order=5)] public string InvoiceNo { … } 为什么该属性不是作为int而不是字符串生成的?

如何将XSD文件转换为C#类

我有一个XSD格式的文件。 如何将其转换为C#类? 我需要在其他Web应用程序中使用类引用,我需要按照以下方式进行调用: var res = client.Post(“/customers”, c );

XSD:使用Visual Studio xsd.exe不生成Array 而不是List

我使用xsd.exe工具从xsd文件生成类。 xsd文件: 输出是: /// [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”, “4.0.30319.1”)] [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 BAXML { private string counterpartyOrgNrField; private BAXMLLimit[] limitField; /// [System.Xml.Serialization.XmlElementAttribute(“Limit”)] public BAXMLLimit[] Limit { get { return this.limitField; } set { this.limitField = value; } }} /// [System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”, “4.0.30319.1”)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“code”)] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)] public partial class BAXMLLimit { private string […]

无效的URI:Uri字符串太长

我正在尝试获取模式并validation我的xml。 XmlReaderSetting settings = new System.Xml.XmlReaderSettings(); settings.Schemas.Add(null, “http://example.com/myschema.xsd”); settings.ValidationEventHandler += new System.Xml.Schema.ValidationEventHandler(settings_ValidationEventHandler); settings.ValidationType = ValidationType.Schema; settings.IgnoreWhitespace = false; XmlReader reader = XmlReader.Create(xml, settings); 我明白了 Invalid URI: The Uri string is too long System.UriFormatException was unhandled Message=Invalid URI: The Uri string is too long. Source=System StackTrace: at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) at System.Uri..ctor(String uriString, […]

在.NET XML反序列化中,如何允许多态使用Array类型?

示例架构: … … 通过.NET运行此wsdl.exe会生成类似于以下内容的代码: [System.Xml.Serialization.XmlIncludeAttribute(typeof(Dog[]))] public partial class Dog { … } public partial class Cat { … } public partial class Foo { private string barField; private object bazField; } 似乎wsdl.exe试图“智能”并意识到我的ArrayOfDog实际上只是一个可以编码为C#数组的包装类型。 当在另一种数据类型中显式引用ArrayOfDog时,这可以正常工作。 但是,当多态地使用ArrayOfDog时(例如,作为xsd:anyType的替换),这会中断。 它似乎打破了,因为.NET运行时对名为“ArrayOfDog”的complexType一无所知 – 它基本上抛弃了这些信息,转而使用原生C#数组。 示例XML文档1: Hello … 示例XML文档2: Hello … … 文档#1由运行时正确反序列化。 我得到了一个类型为Foo的对象,其中包含Bar和Baz的正确反序列化字段。 文档#2被运行时错误地反序列化。 我得到一个类型为Foo的对象,其中有一个正确的反序列化字段用于Bar,但对于Baz字段,我得到System.XML.XMLNode []。 我的猜测是因为运行时对名为“ArrayOfDog”的实体的任何类型绑定都一无所知。 您可能认为XmlInclude指令“XmlIncludeAttribute(typeof(Dog []))”将处理此问题,但它似乎不起作用。 有人遇到过这个吗? 这里有优雅的解决方案吗? 我正在考虑使用的解决方法是将我的“ArrayOf”类型包装在另一种类型中,并将其包含在xsd:anyType的替换中。

从XML文件推断出XmlSchema – 如何遍历XSD中的所有元素?

我有一个XML文件,我在运行时使用XmlSchemaInference类推断其XSD架构。 示例文件: 10 25 50 它确实有效 – 它很好地推断了架构: 问题是: 如何遍历(递归?)遍历此模式中的所有元素? 它们是如何由XmlSchemaSet类存储的? 我需要将它们呈现给用户,以便他们可以进行一些映射。 我正在从XmlSchemaSet.Schemas属性中检索XmlSchema ,然后是什么? XmlSchema.Elements只包含一个项目( products ),我找不到任何方法来查找其子元素。

在C#中,如何确定元素的XSD定义的MaxLength

我正在使用带有附加XSD的XmlReader进行validation。 在读取和validation我的XML文档时,我想在我的C#代码中确定XSD中为特定元素指定的“maxLength”值。 例如,我的XSD片段非常简单地定义为: 我可以使用以下方法轻松获得’minOccurs’值: myReader.SchemaInfo.SchemaElement.MinOccurs; 但是如何获得’maxLength’值(我上面的示例片段中的值为10)??? 我认为’ myReader.SchemaInfo.SchemaElement.Constraints ‘可能会给我这个信息,但该集合的’Count’总是为零。 谢谢, 拍。

从XSD生成SQL Server数据库

重复 : 从XML生成SQL模式 在我正在开发的项目中,我需要支持强类型数据集,用于将数据存储为XML,或者将数据存储在sql server中。 现在我已经创建了XSD架构,我希望能够使用XSD中定义的表和关系创建一个sql server数据库。 这可能吗? 如果是这样,解决这个问题的最佳方法是什么? 澄清 :我正在寻找的是通过C#和SQL Server在运行时通过代码完成上述操作的方法。 可以这样做吗?

xmlserializervalidation

我正在使用XmlSerializer来反序列化Xml achives。 但我发现生成的类xsd.exe只提供读取xml的function,但没有validation。 例如,如果文档中缺少一个节点,则生成的类的属性字段将为null,而不是像我预期的那样抛出validationexception。 我怎样才能做到这一点? 谢谢!

以编程方式从XML Schema生成测试XML

我现在搜索了一下,但是我无法找到一种以编程方式从XML Schema自动生成数据的方法。 假设我有这个XML架构: 我可以使用VS函数“Generate Sample XML”从中创建XML 有没有办法以编程方式执行此操作? 编辑:指定。 我不想自己创建所有对象并以编程方式插入数据。 我希望它能像VS中的“生成示例XML”一样自动创建对象和属性。 这样做的原因是我想更改XSD而不必对xml样本生成做任何事情。