相关疑难解决方法(0)

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架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
    <xs:complexType name="Employee">
        <xs:all>
            <xs:element name="FirstName" type="xs:string"></xs:element>
            <xs:element name="LastName" type="xs:string"></xs:element>
        </xs:all>
    </xs:complexType>

    <xs:element name="Employees">
        <xs:complexType>
            <xs:sequence maxOccurs="unbounded">
                <xs:element name="Employee" type="Employee"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

'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 { …
Run Code Online (Sandbox Code Playgroud)

c# xml xsd xsd.exe svcutil.exe

22
推荐指数
2
解决办法
2万
查看次数

Xsd.exe或Svcutil.exe将XSD架构转换为类

是否建议使用svcutil工具而不是xsd工具?我没有看到这是一个确认的声明,但它确实如此.我对此感到困惑的原因是我使用这两个工具生成了一个类.但是,我使用xsd获得了更好的课程.XSD架构仅由DataContracts组成.

我对svcutil使用了以下命令:

svcutil path-to\xyz.xsd /language:C# /dataContractOnly /importxmltypes /out:path-to\class.cs
Run Code Online (Sandbox Code Playgroud)

这产生了所需的类.但是,它只包含字段的XmlNode []对象.

然后,我对xsd使用了以下命令:

xsd.exe /c path-to\xyz.xsd /out:path-to\class.cs
Run Code Online (Sandbox Code Playgroud)

它产生了比svcutil更好的类.大多数字段都按需转换.

我有理由相信我应该在xsd上使用svcutil吗?

c# xml xsd svcutil.exe

9
推荐指数
1
解决办法
1万
查看次数

Visual Studio XSD工具:生成集合而不是数组

我使用Visual Studio XSD实用程序从XSD生成了一些C#类,它生成了用于存储元素集合的数组,而不是内置的通用Collection <T>(或相关)类之一.

xsd /中没有提到的命令行参数?提到有关生成集合而不是数组的任何内容,但我知道这可以通过Visual Studio生成的Web服务代理类来完成,所以我认为它必须是可能的.

有谁知道如何让XSD实用程序生成集合类而不是数组?

xml xsd code-generation visual-studio

7
推荐指数
1
解决办法
7855
查看次数

标签 统计

xml ×3

xsd ×3

c# ×2

svcutil.exe ×2

code-generation ×1

visual-studio ×1

xsd.exe ×1