2009-07-05 49 views
6

我使用下面的命令来从我的输入XML文件相关的XSD文件 - response.xml,我的困惑是:(1)为什么有两个XSD文件输出(response.xsd和response_app1.xsd),我认为有应该只是其中的一个产生? (2)如果我需要通过使用xsd/classes生成C#类文件,我应该使用哪个xsd文件?为什么XSD.EXE创建两个.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 /?". 

先前感谢, 乔治

回答

1

IIRC,你使用两个,一个可能会引用另一个。

+0

@leppie 1.当我执行XSD response.xsd生成相关的C#类,也有错误消息。我已经发布在我原来的帖子编辑1部分。任何想法有什么不对? 2.“一个人可能会引用另一个人” - 你如何证明这一点? – George2 2009-07-05 14:06:53

2

为什么两个文件如何产生是因为你的XML包含两个XML命名空间的原因;每个生成的XSD都对应一个名称空间。肥皂包名称空间用于导入mycorp名称空间(您可以从xs:import元素中看到)。

+0

我的困惑是,为什么一个XSD文件只能包含一个名称空间? – George2 2009-07-05 16:52:43

+0

另一个困惑是有4个命名空间,它们是xmlns:soapenv =“http://schemas.xmlsoap.org/soap/envelope/”xmlns:xsd =“http://www.w3.org/2001/XMLSchema” xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance”和mycorp命名空间,为什么你说只有2个命名空间? – George2 2009-07-05 16:56:09

5

乔治,

为了从这些文件中的类,则必须在命令行上同时列出:

D:\>xsd response.xsd response_app1.xsd /classes 

它已经被正确地说,这两个xsd文件是因为原始XML文件中有两个XML名称空间。顺便说一句,我猜这里有一点,因为你没有发布XML文件。

-2

是的,从XML文件中删除的命名空间,并生成它,你会得到一个XSD文件

相关问题