我使用以下命令从我的输入XML文件生成相关的xsd文件 - response.xml,我的困惑是(1)为什么有两个xsd文件输出(response.xsd和response_app1.xsd),我认为应该只有其中一个生成? (2)如果我需要使用xsd / classes生成C#类文件,我应该使用哪个xsd文件?
我的环境:VSTS 2008 + C#+ .Net 3.5。
D:\>xsd response.xml
Microsoft (R) Xml Schemas/DataTypes support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.3038]
Copyright (C) Microsoft Corporation. All rights reserved.
Writing file 'D:\response.xsd'.
这是我的输入XML文件和输出XSD文件
http://www.mediafire.com/file/kzzoxw0zwgq/inputoutput.zip
编辑1:
当我执行xsd response.xsd生成相关的C#类时,有错误信息,这里是详细输出,
D:\>xsd response.xsd /classes
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: The 'http://www.mycorp.com/Order/2009/05/mex:Items' e
lement is not declared. Line 10, position 16.
Warning: Schema could not be validated. Class generation may fail or may produce
incorrect results.
Error: Error generating classes for schema 'response'.
- The element 'http://www.mycorp.com/Order/2009/05/mex:Items' is missing.
If you would like more help, please type "xsd /?".
提前谢谢,
乔治
答案 0 :(得分:5)
乔治,
要从这些文件生成类,必须在命令行中列出两者:
D:\>xsd response.xsd response_app1.xsd /classes
已经正确地说两个.xsd文件是因为原始XML文件中有两个XML命名空间。顺便说一句,我猜这里有点因为你没有发布XML文件。
答案 1 :(得分:2)
生成两个文件的原因是因为您的XML包含两个XML命名空间;每个生成的XSD对应一个命名空间。 soap envelope命名空间的名称空间导入mycorp命名空间(可以从xs:import元素中看到)。
答案 2 :(得分:1)
答案 3 :(得分:-2)
是的,从XML文件中删除名称空间并生成它,您将获得单个XSD文件