verwendetes Datenbanksystem: <bitte immer angeben>
Hallo Forum,
ich versuche ein XML zu Lesen indem ich den XML serializer benutze.
Mein erstes Problem dass ich erstmal nicht lösen kann, ist:
Kann ich ein XML Array lesen ohne dass ich das Parent Element nicht brauche
(Im Beispiel <PersonenListe>) ?
XML Datei
<DataBase Version="1.0">
<Personenliste>
<Person>
....
</Person>
<Person>
....
</Person>
</Personenliste>
</DataBase>
stattdesen
<DataBase Version="1.0">
<Person>
....
</Person>
<Person>
....
</Person>
</DataBase>
Hallo Michael S.,
Willkommen im Forum. Wieso kannst du dein XML nicht serialisieren und dann einfach mit dem Property arbeiten, was du brauchst?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hallo Coffebean,
ich arbeite bereits mit Serialisierung. Ich kann es auch einlesen aber beim Arrays brauche ich immer eine Element die ein ebene höher ist.
Diesen würde ich nach möglichkeit vermeiden den mein XML File 3 fache Tiefe besitzt.
Vielleicht habe ich mich auch nicht ganz klar ausgedrückt da ich mit C# erst jetzt so richtig anfange.
Mein Wunsch wäre (die Anzahl der Array Elemente Data,Set,Item ist beliebig)
Bsp:
<DatBase>
<Data Process ="Data1">
<Set ID="Set1">
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Set>
<Set ID="Set2">
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Set>
</Data>
<Data Process ="Data2">
<Set ID="Set1">
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Set>
<Set ID="Set2">
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Set>
</Data>
<DatBase>
Ich muss jedoch aber so erstellen:
<DatBase>
<DataList>
<Data Process ="Data1">
<SetList>
<Set ID="Set1>
<Items>
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Items>
</Set>
<Set ID="Set2>
<Items>
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Items>
</Set>
</SetList>
<Data Process ="Data2">
<SetList>
<Set ID="Set1>
<Items>
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Items>
</Set>
<Set ID="Set2>
<Items>
<Item Test="1kk">
</Item>
<Item Test="2kk">
</Item>
<Item Test="3kk">
</Item>
</Items>
</Set>
</SetList>
</Data>
</DataList>
<DatBase>
Müssen diese Array Elemente DataList,SetList,Items immer mit dabei sein oder geht es auch wie ich es mir wünsche?
So ist der Aufbau der XML besser lesbar
[XML entfernt - Coffeebean]
Ich habe das XML mal entfernt, da das gleiche wie im vorigen Beitrag. Bitte benutze die richtigen Code-Tags um sowas zu vermeiden. Danke.
Wenn du per Serialisierung arbeitest, muss dein deserialisiertes Objekt entweder das XML abbilden - heisst: "unnötige" Mantel-Property - oder du kannst die Standardserialisierung erweitern. Eine dritte Möglichkeit ist die clevere Benutzung von Properties:
public class DatBase
{
[DataMember]
private DataList DataList { get; set; }
[IgnoreDataMember]
public DataProcess[] Processes => DataList.Processes;
}
Macht den wenigsten Aufwand und das Ergebnis sieht "von außen" (für den anwendenden Programmierer) genauso aus, als wäre dein XML die obere Variante.
LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)