|
|
|
|
@@ -8,45 +8,76 @@ using System.Xml;
|
|
|
|
|
|
|
|
|
|
namespace XMLParser
|
|
|
|
|
{
|
|
|
|
|
public static class XMLParser
|
|
|
|
|
public class XMLParser
|
|
|
|
|
{
|
|
|
|
|
public static List<KanalObjekt> ParseFile(string xmldatei)
|
|
|
|
|
{
|
|
|
|
|
Tuple<List<AbwassertechnischeAnlage>,List<InspizierteAbwassertechnischeAnlage>> src = LoadFile(xmldatei);
|
|
|
|
|
List<AbwassertechnischeAnlage> Stammdaten = src.Item1.FindAll(x => x.ObjektArt.Equals(EObjektArt.KNOTEN));
|
|
|
|
|
List<InspizierteAbwassertechnischeAnlage> Inspektionsdaten = src.Item2;
|
|
|
|
|
private List<AbwassertechnischeAnlage> stammdaten = null;
|
|
|
|
|
private List<InspizierteAbwassertechnischeAnlage> inspektionsdaten = null;
|
|
|
|
|
private XmlNamespaceManager manager = null;
|
|
|
|
|
private XmlNode rootChild = null;
|
|
|
|
|
private List<KanalObjekt> kanalObjekte = null;
|
|
|
|
|
private Queue<AbwassertechnischeAnlage> QueueToRebuild = new Queue<AbwassertechnischeAnlage>();
|
|
|
|
|
|
|
|
|
|
List<KanalObjekt> kanalObjekte = new List<KanalObjekt>();
|
|
|
|
|
foreach(InspizierteAbwassertechnischeAnlage iat in Inspektionsdaten) {
|
|
|
|
|
AbwassertechnischeAnlage stammdaten = Stammdaten.Find(x => x.Objektbezeichnung.Equals(iat.Objektbezeichnung));//;
|
|
|
|
|
kanalObjekte.Add(new KanalObjekt() {
|
|
|
|
|
Stammdaten = stammdaten,
|
|
|
|
|
public List<KanalObjekt> KanalObjekte { get => kanalObjekte; private set => kanalObjekte = value; }
|
|
|
|
|
|
|
|
|
|
public XMLParser(string xmlfile)
|
|
|
|
|
{
|
|
|
|
|
KanalObjekte = new List<KanalObjekt>();
|
|
|
|
|
stammdaten = new List<AbwassertechnischeAnlage>();
|
|
|
|
|
inspektionsdaten = new List<InspizierteAbwassertechnischeAnlage>();
|
|
|
|
|
ParseFile(xmlfile);
|
|
|
|
|
RebuildStammdaten();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void RebuildStammdaten()
|
|
|
|
|
{
|
|
|
|
|
// liste an knoten
|
|
|
|
|
List<AbwassertechnischeAnlage> knoten = stammdaten.FindAll(x => x.ObjektArt == EObjektArt.KNOTEN);
|
|
|
|
|
while(QueueToRebuild.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
AbwassertechnischeAnlage anlage = QueueToRebuild.Dequeue();
|
|
|
|
|
anlage.Kante.KnotenZulauf = knoten.Find(x => x.Objektbezeichnung.Equals(anlage.Kante.knotenZulaufTemp)).Knoten;
|
|
|
|
|
anlage.Kante.KnotenAblauf = knoten.Find(x => x.Objektbezeichnung.Equals(anlage.Kante.knotenAblaufTemp)).Knoten;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ParseFile(string xmldatei)
|
|
|
|
|
{
|
|
|
|
|
Tuple<List<AbwassertechnischeAnlage>,List<InspizierteAbwassertechnischeAnlage>> src = LoadRawFile(xmldatei);
|
|
|
|
|
stammdaten = src.Item1;//.FindAll(x => x.ObjektArt.Equals(EObjektArt.KNOTEN));
|
|
|
|
|
inspektionsdaten = src.Item2;
|
|
|
|
|
|
|
|
|
|
//kanalObjekte = new List<KanalObjekt>();
|
|
|
|
|
foreach(InspizierteAbwassertechnischeAnlage iat in inspektionsdaten) {
|
|
|
|
|
AbwassertechnischeAnlage stammdatens = stammdaten.Find(x => x.Objektbezeichnung.Equals(iat.Objektbezeichnung));//;
|
|
|
|
|
KanalObjekte.Add(new KanalObjekt() {
|
|
|
|
|
Stammdaten = stammdatens,
|
|
|
|
|
Inspektionsdaten = iat,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return kanalObjekte;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
private static Tuple<List<AbwassertechnischeAnlage>,List<InspizierteAbwassertechnischeAnlage>> LoadFile(string xmldatei) {
|
|
|
|
|
private Tuple<List<AbwassertechnischeAnlage>,List<InspizierteAbwassertechnischeAnlage>> LoadRawFile(string xmldatei) {
|
|
|
|
|
List<AbwassertechnischeAnlage> Stammdaten = new List<AbwassertechnischeAnlage>();
|
|
|
|
|
List<InspizierteAbwassertechnischeAnlage> Inspektionsdaten = new List<InspizierteAbwassertechnischeAnlage>();
|
|
|
|
|
|
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
|
|
doc.Load(xmldatei);
|
|
|
|
|
XmlNode rootChild = doc.LastChild;
|
|
|
|
|
rootChild = doc.LastChild;
|
|
|
|
|
|
|
|
|
|
XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
|
|
|
|
|
manager = new XmlNamespaceManager(doc.NameTable);
|
|
|
|
|
manager.AddNamespace("e", "http://www.ofd-hannover.la/Identifikation");
|
|
|
|
|
XmlNode root = rootChild.SelectSingleNode("//e:Datenkollektive", manager);
|
|
|
|
|
rootChild = rootChild.SelectSingleNode("//e:Datenkollektive", manager);
|
|
|
|
|
|
|
|
|
|
Stammdaten = LoadStammdatenCollectiv(manager, root);
|
|
|
|
|
Inspektionsdaten = LoadInspektionsdatenCollectiv(manager,root);
|
|
|
|
|
Stammdaten = LoadStammdatenCollectiv();
|
|
|
|
|
Inspektionsdaten = LoadInspektionsdatenCollectiv();
|
|
|
|
|
return new Tuple<List<AbwassertechnischeAnlage>, List<InspizierteAbwassertechnischeAnlage>>(Stammdaten,Inspektionsdaten);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<InspizierteAbwassertechnischeAnlage> LoadInspektionsdatenCollectiv(XmlNamespaceManager manager, XmlNode root)
|
|
|
|
|
private List<InspizierteAbwassertechnischeAnlage> LoadInspektionsdatenCollectiv()
|
|
|
|
|
{
|
|
|
|
|
List<InspizierteAbwassertechnischeAnlage> result = new List<InspizierteAbwassertechnischeAnlage>();
|
|
|
|
|
XmlNode zstdk = root.SelectSingleNode("//e:Zustandsdatenkollektiv", manager);
|
|
|
|
|
XmlNode zstdk = rootChild.SelectSingleNode("//e:Zustandsdatenkollektiv", manager);
|
|
|
|
|
XmlNodeList Inspektionsdaten = zstdk.SelectNodes("//e:InspizierteAbwassertechnischeAnlage", manager);
|
|
|
|
|
|
|
|
|
|
foreach(XmlNode node in Inspektionsdaten) {
|
|
|
|
|
@@ -292,10 +323,10 @@ namespace XMLParser
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<AbwassertechnischeAnlage> LoadStammdatenCollectiv(XmlNamespaceManager manager,XmlNode root)
|
|
|
|
|
private List<AbwassertechnischeAnlage> LoadStammdatenCollectiv()
|
|
|
|
|
{
|
|
|
|
|
List<AbwassertechnischeAnlage> result = new List<AbwassertechnischeAnlage>();
|
|
|
|
|
XmlNode zstdk = root.SelectSingleNode("//e:Stammdatenkollektiv", manager);
|
|
|
|
|
XmlNode zstdk = rootChild.SelectSingleNode("//e:Stammdatenkollektiv", manager);
|
|
|
|
|
XmlNodeList Stammdaten = zstdk.SelectNodes("//e:AbwassertechnischeAnlage", manager);
|
|
|
|
|
|
|
|
|
|
foreach(XmlNode node in Stammdaten)
|
|
|
|
|
@@ -305,7 +336,7 @@ namespace XMLParser
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static AbwassertechnischeAnlage ParseStammdaten(XmlNode node)
|
|
|
|
|
private AbwassertechnischeAnlage ParseStammdaten(XmlNode node)
|
|
|
|
|
{
|
|
|
|
|
AbwassertechnischeAnlage result = new AbwassertechnischeAnlage();
|
|
|
|
|
foreach(XmlNode aktuell in node.ChildNodes)
|
|
|
|
|
@@ -313,10 +344,13 @@ namespace XMLParser
|
|
|
|
|
switch(aktuell.Name)
|
|
|
|
|
{
|
|
|
|
|
case "Objektbezeichnung":result.Objektbezeichnung = aktuell.InnerText;break;
|
|
|
|
|
case "Objektart":result.ObjektArt = (EObjektArt)Convert.ToInt32(aktuell.InnerText); break;
|
|
|
|
|
case "Objektart":result.ObjektArt = (EObjektArt)Convert.ToInt32(aktuell.InnerText);Trace.WriteLine(result.ObjektArt); break;
|
|
|
|
|
case "Entwaesserungsart":result.Entwaesserungsart = aktuell.InnerText;break;
|
|
|
|
|
case "Knoten":result.Knoten = parseStammdatenKnoten(aktuell); break;
|
|
|
|
|
case "Kante": result.Kante = parseKante(aktuell); break;
|
|
|
|
|
case "Kante":
|
|
|
|
|
result.Kante = parseKante(aktuell);
|
|
|
|
|
QueueToRebuild.Enqueue(result);
|
|
|
|
|
break;
|
|
|
|
|
case "Lage":
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
@@ -325,9 +359,33 @@ namespace XMLParser
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static Kante parseKante(XmlNode aktuell)
|
|
|
|
|
private Kante parseKante(XmlNode aktuell)
|
|
|
|
|
{
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
/*
|
|
|
|
|
KantenTyp
|
|
|
|
|
KnotenZulauf
|
|
|
|
|
KnotenZulaufTyp
|
|
|
|
|
KnotenAblauf
|
|
|
|
|
KnotenAblaufTyp
|
|
|
|
|
SohlhoeheZulauf
|
|
|
|
|
SohlhoeheAblauf
|
|
|
|
|
Laenge
|
|
|
|
|
Material
|
|
|
|
|
Profil
|
|
|
|
|
Haltung
|
|
|
|
|
*/
|
|
|
|
|
Kante result = new Kante();
|
|
|
|
|
|
|
|
|
|
foreach(XmlNode s in aktuell.ChildNodes)
|
|
|
|
|
{
|
|
|
|
|
switch(s.Name)
|
|
|
|
|
{
|
|
|
|
|
case "KnotenZulauf": result.knotenZulaufTemp = s.InnerText; break;
|
|
|
|
|
case "KnotenAblauf": result.knotenAblaufTemp = s.InnerText; break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static Knoten parseStammdatenKnoten(XmlNode aktuell)
|
|
|
|
|
|