我正在尝试在运行时获取某个XSD(元素)的.NET对象表示。
如何在运行时使用Linq到XSD而不是设计时间?
谢谢, --Ran。
答案 0 :(得分:1)
我在几个项目中使用它。
您必须手动编辑项目文件将其添加为目标。我同意一些信息很少的评论。
首先,您必须在项目参考中引用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" />
您可以用$(ProgramFiles)引用替换.... \ nonsense但我还没有测试过它。如果你转到xsd文件的属性,也可以省略ItemGroup部分,其中一个构建操作应该是“LinqToXsdSchema”(仅在设置了LinqToXsd.targets之后)
现在,您可以使用解析方法
将xsd文件用作完全填充的对象我的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