Erstplakat, Langzeitleser. Ich habe einen XML-Import zu schreiben (eine weitere erste), und ich bin verloren in den widersprüchlichen Methoden und Ansätze, die angenommen werden können.Laden von XML basierend auf Attributwert
Die XML ich Import bin versucht, sieht in etwa wie folgt aus:
...
<TableRow>
<Field Name="DeliveryNote" Type="etc..">Text</Field>
<Field Name="OrderNumber" Type="etc..">Text</Field>
and so on...
</TableRow>
...
ich ein Objekt mit Eigenschaften für die Mehrzahl der Felder haben (nicht alle erforderlich), und ich bevölkern derzeit die Eigenschaften in einem Konstruktor, der die entsprechende XElement aus zu bauen geworfen wird, etwa so:
public Order(XElement p_tableRow)
{
foreach (XElement field in p_TableRow.Elements("Field"))
{
switch (field.Attribute("Name").Value)
{
case "DeliveryNote":
ReasonCode = field.Value;
break;
case "OrderNumber":
OrderID = field.Value;
break;
case "ProductCode":
CustProductCode = field.Value;
break;
case "Quantity":
QuantityCharged = field.Value;
break;
...
Mein Problem ist, dass, während dies die Arbeit getan wird, ist es furchtbar klobig scheint (und hässlich). Sicherlich gibt es einen besseren Weg?
Ich habe versucht, meinen Kopf herum zu bekommen, wie man dies mit der Projektion macht, aber habe kein Beispiel gefunden, wo Sie das Ziel der Daten basierend auf einem Attribut im Knoten entscheiden.
Ich verwende .NET 3.5
Alle Zeiger massiv geschätzt würde.
Haben Sie versucht, Xml Serialisierung zu verwenden? http://stackoverflow.com/questions/16831317/c-sharp-xml-deserialization-xmlattribute –
Ich mag Ihren Code. Es ist leicht zu verstehen und zu modifizieren. Sie erstellen eine Pivot-Tabelle, und der Pivot-Tabellencode kann komplex sein. Ich würde den Code so einfach wie möglich halten und nicht nach Abkürzungen suchen. – jdweng
@ Sam.C: Ich bin nicht sicher, Serialisierung ist der richtige Weg, um hier zu gehen, weil technisch (soweit ich es verstehe) würde ich viel über das Erstellen einer Feldklasse zu deserialise in, nur im Wesentlichen zu bekommen Schlüssel/Wert-Paar. – AshLewis