3

我正在使用 xsd2code 从 star 标准提供的 xsd 模式生成类。

我确实尝试使用 xsd.exe 来生成类,但效果不佳。

当我从“ProcessCreditApplication.xsd”生成类时,它会生成一个包含所有需要类的文件。此时一切正常。

当我生成另一个 xsd 时,ConfirmBOD.xsd 出现歧义错误,因为这两个文件包含相同的基类。

例如,这两个文件都会生成一个“描述”类。因为两个文件都在同一个命名空间中,所以在同一个命名空间中的两个类之间存在歧义。

有没有办法从多个 xsd 生成类,这样子类就不会重复?

我唯一想解决这个问题的方法是将每个生成的文件都放在自己的命名空间中。这并不理想,但有效。

我想使用 xsd.exe,因为它似乎需要可乘的文件,但它生成的代码不能满足我的需要。

更新 我尝试了 Linq to xsd,但它没有用。它抱怨说相同的类型“已经被声明”。

供参考:这是我获取架构的地方:

http://www.starstandard.org/SIGXMLSTAR4/XMLSchemas http://www.starstandard.org/uploads/SIGXMLSTAR4/STARSchemaRepository_Rev444.zip

4

4 回答 4

1

我认为实际上只有两种选择:

  1. 为每个生成的文件使用不同的命名空间。
  2. 为您的所有类型提供唯一名称(对于您的情况可能不是一个选项)。

如果你仔细想想,每个生成的文件实际上是一堆类,而不仅仅是一个类,所以给每个文件自己的命名空间实际上是有意义的。

于 2010-09-10T21:37:25.877 回答
1

现在有“排除包含的类型”复选框,所以应该没有问题了。

于 2014-07-15T13:59:00.270 回答
1

您可以为 LinqToXsd 命名空间配置使用额外的 XML 文件。

mogness的示例,http: //blog.mogness.com/?p=36

<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="http://www.microsoft.com/xml/schema/linq">
  <Namespaces>
    <Namespace Schema="http://www.Schema1" Clr="My.Schema1"/>
    <Namespace Schema="http://www.Schema2" Clr="My.Schema2"/>
    <Namespace Schema="" Clr="My"/>
  </Namespaces>
</Configuration>

与 Visual Studio 顺利集成的其他详细信息,作者ehoscahttp ://linqtoxsd.codeplex.com/discussions/238570#PostDetailsCell_591728

在与 XSD 相同的解决方案中创建一个 XML 文件,并(称为 linq2xsdconfig.xml)

选择 linq2xsdconfig.xml 的构建操作为:LinqToXsdConfiguration

LinqToXsd.exe@bporter所述,您还可以将相同的 XML 文件传递​​给。

LinqToXsd <schemaFile> /config:linq2xsdconfig.xml
于 2012-07-25T15:37:44.463 回答
1

我在使用 xsd.exe 时也遇到了问题。我已经成功使用 Microsoft 的 LinqToXsd 项目从 XSD 文件生成 C# 代码。我还没有尝试过处理极其复杂的 XSD 文件,但你可以试一试。

LinqToXsd 项目在CodePlex上是开源的

命令行使用语法是:

LinqToXsd <schemaFile> [one or more schema files] [/fileName:<csFileName>.cs] [/lib:<assemblyName>] [/config:<configFileName>.xml] [/enableServiceReference] [/nameMangler2]
于 2010-09-10T21:23:37.207 回答