我已经使用了Linq2SQL,并熟悉了大多数概念(直至并包括扩展ObjectContext),但对于Linq2XML,我有点遗失。使用LINQ在VS2010中使用xsd生成XML
我现在需要生成一些复杂的XML,我想使用LINQ的简单性。
此前,我使用XMLDocuments和编程方式构建元素 - 我希望我可以得到更优雅的东西。
我已经给出了15余XSD文件的形式复杂的架构 - 这进口的至少一个其他XSD(公用数据类型),并且大部分其中一些进口彼此
所以我已经得到的东西,如:
文件1..1
<xsd:schema targetNamespace="http://www.SomeCompany.com"
xmlns:SomeCompany="http://www.SomeCompany.com/datatypes_EA"
xmlns="http://www.SomeCompany.com" xmlns:dct="http://www.SomeCompany.com/DCTRequestdatatypes"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">
<xsd:import namespace="http://www.SomeCompany.com/datatypes_EA"
schemaLocation="datatypes_EA.xsd" />
<xsd:import namespace="http://www.SomeCompany.com/DCTRequestdatatypes"
schemaLocation="DCTRequestdatatypes.xsd" />
<xsd:element name="DCTRequest">
<xsd:complexType>
<blah which references types stored in datatypes_EA.xsd>
</xsd:complexType>
</xsd:element>
</xsd:schema>
和其他文件(DataTypes_EA.xsd),其中包含常见的数据类型。
我必须调整<import>
s到解决路径问题,但现在VS2010显示为0的错误(并没有什么在编辑器中加下划线)
的各种文件1 ... N定义需要的XML打一个网络服务 - 因此没有共同的根(有一个xsd请求类型1,请求类型2等)
我找到了xsd.exe工具来生成类,但如果我指出它在(说)请求类型1的模式,我得到了很多模式验证警告 - 说它找不到常见的数据类型(如它不读取导入语句),并没有产生任何东西。
理想情况下,我想跳过完全生成类,但会接受它,如果需要。
总之,如何从哪里得到我编写类似:
Dim Root as new DCTRequest with {.Property = "SomeValue"}
...
Dim ElementsWithSomething = A.SomeElementCollection.Where(function(x) x.PropertyName = "Something")
Dim FinalXML = A.Tostring (or serialize or whatever)
我是不是接近这一错了吗?
预先感谢任何帮助
感谢您的回答 - 我看到了Rick Strahl在博客文章中引用的技术,但它仍然会生成相同的错误 - 即它试图单独解析每个文件,而不是一次加载它们。我离开办公室,所以明天再试一次结果。 – Basic 2010-08-23 23:04:54
据我所知,该*应该*工作,但这是一段时间,因为我做了一些xsd的东西。根据http://msdn.microsoft。com/en-us/library/ms950721您也可以尝试wsdl.exe – 2010-08-24 06:01:14
对不起,响应缓慢。这似乎并不奏效 - 它试图分析所有文件,但是单独这样做(即忽略include)。我其实已经走过了不同的路线,并将所有的xsds合并为一个文件。这使我可以使用xsd工具。如果您想更新您的答案以包含该建议,我会标记为正确。如果没有,我会发布我自己的答案 - 但你确实把我的想法放在正确的路线上。 – Basic 2010-08-26 12:36:03