2010-01-27 5 views
7

Donné ce xml:Comment interroger xsi: type d'un attribut utilisant Linq en XML?

<?xml version="1.0" encoding="utf-8"?> 
<EntityDefinition xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <components> 
    <component xsi:type="TypeA"> 
     <Property1>100</Property1> 
    </component> 
    <component xsi:type="TypeB"> 
     <Property2>100</Property2> 
    </component> 
    </components> 
</EntityDefinition> 

Je voudrais faire une boucle sur les composants et instancier chaque objet en fonction de l'attribut xsi: type.

Voici quelques Linq au code XML:

IEnumerable<XElement> components = 
    from c in elementsFromFile.Descendants("component") 
    select (XElement)c; 

    foreach (XElement e in components) 
    { 
     var type = e.Attributes("xsi:type"); 
    } 

Malheureusement, la ligne « var type = e.Attributes ("xsi: type"), » ne fonctionne pas parce que les deux points ne sont pas autorisés dans un nom.

Une idée sur la façon dont je peux interroger l'attribut xsi: type de chaque élément?

Merci,

Rick

Répondre

Questions connexes