Hallo zusammen. Ich hoffe jemand kann mir etwas helfen.
Ich habe folgende XML-Struktur:
In dieser Datei sind mehrere Unternehmen gespeichert.
Ein Unternehmen kann n Angestellte und m Zweigstellen haben.
Die Zweigstellen haben wiederum x Angestellte.
Diese Unternehmen möchte ich nun in C# in ein Liste aufnehmen bestehend aus Unternehmen:
Die Unternehmensklasse:
Mein bisheriger Versuch:
Ich hole mit die Unternehmen und füge sie in die Liste ein für spätere Verarbeitung.
Dies geht auch, nur habe ich immer alle Mitarbeiter bei jedem Unternehmen drin.
Ich denke, dies liegt daran, dass der XPath ("/Unternehmensliste/Unternehmen/Angestellter") nicht stimmt, da dies mir immer alle Angestellten ausliest. Ich möchte aber nur die innerhalb des aktuellen Zweiges.
Gehe ich das so richtig an oder bin ich total auf dem Holzweg?
Selbes Problem habe ich auch mit den Zweigstellen, aber ich denke, das ist die gleiche Ursache.
Gruß
domeemod
Ich habe folgende XML-Struktur:
HTML:
<Unternehmensliste>
<Unternehmen>
<Bezeichnung>DummyFirma GMBH</Bezeichnung>
<Anzeigename>DummyFirma</Anzeigename>
<ID>1</ID>
<Angestellter>
<idAngestellter>1</idAngestellter>
<Name>Test</Name>
<Vorname>Olaf</Vorname>
</Angestellter>
</Unternehmen>
<Unternehmen>
<Bezeichnung>ABC GMBH</Bezeichnung>
<Anzeigename>Hersteller A</Anzeigename>
<ID>2</ID>
<Angestellter>
<idAngestellter>26</idAngestellter>
<Name>Miller</Name>
<Vorname>Anton</Vorname>
</Angestellter>
<Zweigstelle>
<Bezeichnung></Bezeichnung>
<Anzeigename>Zweigstelle A</Anzeigename>
<ID>20</ID>
<Angestellter>
<idAngestellter>27</idAngestellter>
<Name>Test</Name>
<Vorname>Testi</Vorname>
</Angestellter>
</Zweigstelle>
</Unternehmen>
[...]
</Unternehmensliste>
In dieser Datei sind mehrere Unternehmen gespeichert.
Ein Unternehmen kann n Angestellte und m Zweigstellen haben.
Die Zweigstellen haben wiederum x Angestellte.
Diese Unternehmen möchte ich nun in C# in ein Liste aufnehmen bestehend aus Unternehmen:
C++:
List<Unternehmen> l_Unternehmen = new List<Unternehmen>();
Die Unternehmensklasse:
C++:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApplication1
{
class Unternehmen
{
string Bezeichnung;
string Anzeigename;
uint ID;
List<Angestellter> l_Angestellter;
List<Unternehmen> l_Zweigstellen;
public Unternehmen()
{
}
public Unternehmen(string nBezeichnung, uint nID)
{
this.Bezeichnung = nBezeichnung;
this.ID = nID;
this.l_Angestellter = new List<Angestellter>();
this.l_Zweigstellen = new List<Unternehmen>();
}
public string get_Bezeichnung()
{
return this.Bezeichnung;
}
public void get_Bezeichnung(string newBezeichnung)
{
this.Bezeichnung = newBezeichnung;
}
public string get_Anzeigename()
{
return this.Anzeigename;
}
public void set_Anzeigename(string newAnzeigename)
{
this.Anzeigename = newAnzeigename;
}
public List<Angestellter> get_Angestellte()
{
return this.l_Angestellter;
}
public List<Unternehmen> get_Zweigstellen()
{
return this.l_Zweigstellen;
}
public uint get_ID()
{
return this.ID;
}
override public string ToString()
{
return this.Bezeichnung;
}
}
}
Mein bisheriger Versuch:
C++:
XmlDocument xdoc = new XmlDocument();
foreach (XmlNode unternehmen in xdoc.SelectNodes("/Unternehmensliste/*"))
{
Unternehmen unter = new Unternehmen(unternehmen["Bezeichnung"].InnerText, uint.Parse(unternehmen["ID"].InnerText));
if(unternehmen["Angestellter"] != null)
{
foreach (XmlNode angestellter in xdoc.SelectNodes("/Unternehmensliste/Unternehmen/Angestellter"))
{
Angestellter an = new Angestellter(uint.Parse(angestellter["idAngestellter"].InnerText));
unter.get_Angestellte().Add(an);
}
}
l_Unternehmen.Add(unter);
}
Ich hole mit die Unternehmen und füge sie in die Liste ein für spätere Verarbeitung.
Dies geht auch, nur habe ich immer alle Mitarbeiter bei jedem Unternehmen drin.
Ich denke, dies liegt daran, dass der XPath ("/Unternehmensliste/Unternehmen/Angestellter") nicht stimmt, da dies mir immer alle Angestellten ausliest. Ich möchte aber nur die innerhalb des aktuellen Zweiges.
Gehe ich das so richtig an oder bin ich total auf dem Holzweg?
Selbes Problem habe ich auch mit den Zweigstellen, aber ich denke, das ist die gleiche Ursache.
Gruß
domeemod