【发布时间】:2010-08-23 12:03:26
【问题描述】:
我使用过很多 Linq2SQL,并且熟悉大部分概念(包括扩展 ObjectContext),但对于 Linq2XML,我有点迷茫。
我现在需要生成一些复杂的 XML,我想使用 LINQ 的简单性。
以前,我使用过 XMLDocuments 并以编程方式构建元素 - 我希望我能得到一些更优雅的东西。
我收到了 15 多个 xsd 形式的复杂架构 - 其中大多数至少导入一个其他 xsd(常见数据类型),其中一些相互导入
所以我有类似的东西:
文件 1..n
<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 定义了访问 Web 服务所需的 xml - 因此没有公共根(对于请求类型 1、请求类型 2 等有一个 xsd)
我找到了 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)
我是不是搞错了?
提前感谢您的帮助
【问题讨论】:
标签: xml linq visual-studio-2010 xsd