2010-01-27 14 views
7

Dada esta xml:Cómo consultar xsi: escriba desde un atributo utilizando Linq a 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> 

me gustaría bucle en los componentes e instanciar cada objeto basado en el atributo xsi: tipo.

Aquí hay algo de código de LINQ to XML:

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

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

Por desgracia, el “tipo var = e.Attributes línea ("xsi: type");” no funciona porque los dos puntos no están permitidos en un nombre.

¿Alguna idea sobre cómo puedo consultar el atributo xsi: type de cada elemento?

Gracias,

Rick

Respuesta

Cuestiones relacionadas