Я использовал много Linq2SQL и знаком с большинством концепций (вплоть до расширения ObjectContext, включая его), но что касается Linq2XML, я немного растерялся.
Теперь у меня есть потребностьчтобы создать какой-то сложный XML, и я хотел бы использовать простоту LINQ.
Ранее я использовал XMLDocuments и программно созданные элементы - я надеюсь, что смогу получить что-то более элегантное.
Мне дана сложная схема в виде 15 с лишним xsds - большинство из которых импортирует хотя бы еще один 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), который содержит общие типы данных.
Iпришлось настроить <import>
s для исправления проблем с путями, но VS2010 теперь отображает 0 ошибок (и ничто не подчеркивается в редакторе)
Различные файлы 1 ... n определяют xml, необходимый дляпоразить веб-сервис - как такового нет общегоroot (есть 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)
Я неправильно это подхожу?
Заранее спасибо за любую помощь