9 Stimmen

Wie kann man mit Linq to XML xsi:type aus einem Attribut abfragen?

Angesichts dieser 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>

Ich möchte eine Schleife über die Komponenten laufen lassen und jedes Objekt auf der Grundlage des xsi:type-Attributs instanziieren.

Hier ist etwas Linq zu XML Code:

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

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

Leider funktioniert die Zeile "var type = e.Attributes("xsi:type");" nicht, da Doppelpunkte in einem Namen nicht zulässig sind.

Irgendeine Idee, wie ich das xsi:type-Attribut von jedem Element abfragen kann?

Ich danke Ihnen,

Rick

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X