2009-06-30 7 views
2

J'essaie d'obtenir la représentation de l'objet .NET d'un certain XSD (élément) lors de l'exécution. Comment puis-je utiliser Linq à XSD pour faire cela en exécution par opposition à la conception?Linq To XSD at runtime

Merci, --Ran.

+0

il n'y a pas de couplage entre un XSD nd Xml.Linq. Qu'est-ce qui vous fait penser qu'il y a même au moment du design? – AnthonyWJones

+0

Ce blog par exemple: http://weblogs.asp.net/fmarguerie/archive/2007/01/15/linq-to-xsd-typed-xml-programming-with-linq.aspx – Ran

+0

Voir ici: http: //linqtoxsd.codeplex.com/ "La technologie LINQ vers XSD permet aux développeurs .NET de prendre en charge la programmation XML typée ..." – Ran

Répondre

1

Je l'utilise sur quelques projets.

Vous devez l'ajouter en tant que cible en modifiant manuellement votre fichier de projet. Je suis d'accord avec certains commentaires selon lesquels l'information est rare.

vous devez d'abord faire référence à la dll dans votre projet fait référence

seconde, vous devez « décharger » le projet (clic droit sur le fichier de projet)

puis modifiez le fichier de projet (nouveau clic droit)

ajouter ce qui suit au fichier de projet 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" /> 

Vous pouvez probablement remplacer le .... \ non-sens avec les $ (ProgramFiles) ref mais je ne l'ai pas testé. Aussi, vous pouvez omettre la partie ItemGroup si vous allez dans les propriétés du fichier XSD, l'une des actions de construction devraient être « LinqToXsdSchema » (seulement après avoir réglé les LinqToXsd.targets bien)

Vous pouvez maintenant utiliser votre fichier xsd comme un objet entièrement rempli en utilisant la méthode Parse

Mon élément racine XSD est

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
     <xs:element name="AlertData"> 
     </xs:element> 

donc dans le code que je peux accéder comme ça

// Parse the xml doc as my LinqToXsd object  
AlertData XmlSource = AlertData.Parse(xmlSource.ToString()); 

// Start accessing xelements 
XmlSource.waalert.waa_alert