Laden...

XML ohne Parentnode auslesen

Erstellt von Michael S. vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.078 Views
M
Michael S. Themenstarter:in
3 Beiträge seit 2018
vor 5 Jahren
XML ohne Parentnode auslesen

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>
2.207 Beiträge seit 2011
vor 5 Jahren

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

M
Michael S. Themenstarter:in
3 Beiträge seit 2018
vor 5 Jahren

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?

M
Michael S. Themenstarter:in
3 Beiträge seit 2018
vor 5 Jahren

So ist der Aufbau der XML besser lesbar

[XML entfernt - Coffeebean]

Hinweis von Coffeebean vor 5 Jahren

Ich habe das XML mal entfernt, da das gleiche wie im vorigen Beitrag. Bitte benutze die richtigen Code-Tags um sowas zu vermeiden. Danke.

3.003 Beiträge seit 2006
vor 5 Jahren

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)