Я пытаюсь получить представление объекта .NET некоторого XSD (элемента) во время выполнения.
Как я могу использовать Linq для XSD для выполнения во время выполнения в отличие от времени разработки?
Спасибо, --Ran.
Я использую его в нескольких проектах.
Вы должны добавить его в качестве цели, вручную отредактировав файл проекта. Я согласен с некоторыми комментариями, что информации мало.
сначала вам нужно ссылаться на dll в ссылках на проект
второй вам нужно "выгрузить" проект (щелкните правой кнопкой мыши файл проекта)
затем отредактируйте файл проекта (щелкните правой кнопкой мыши еще раз)
добавить в файл проекта xml
следующее:</PropertyGroup> // End of other property groups
<PropertyGroup>
<TXLINQBinDir Condition="'$(TXLINQBinDir)' == ''">$(ProgramFiles)\LINQ to XSD Preview\Bin</TXLINQBinDir>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Xml.Schema.Linq, Version=0.10.1000.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Program Files\LINQ to XSD Preview\Bin\Microsoft.Xml.Schema.Linq.DLL</HintPath>
</Reference>
<Reference Include="XOTask, Version=0.10.1000.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Program Files\LINQ to XSD Preview\Bin\XOTask.dll</HintPath>
</Reference>
<Reference> // Other references
<ItemGroup>
// Other item groups
</ItemGroup>
<ItemGroup>
<LinqToXsdSchema Include="Schema\YourSchema.xsd" />
</ItemGroup>
<Import Project="$(TXLINQBinDir)\LinqToXsd.targets" />
Вероятно, вы можете заменить.... \nonsense ссылкой $(ProgramFiles), но я ее не тестировал. Также вы можете опустить часть ItemGroup, если перейти к свойствам файла xsd, одним из действий сборки должно быть "LinqToXsdSchema" (только после установки LinqToXsd.targets).
Теперь вы можете использовать свой xsd файл как полностью заполненный объект, используя метод Parse
Мой корневой элемент Xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AlertData">
</xs:element>
Итак, в коде я могу получить доступ к нему, как это
// Parse the xml doc as my LinqToXsd object
AlertData XmlSource = AlertData.Parse(xmlSource.ToString());
// Start accessing xelements
XmlSource.waalert.waa_alert