Knoten werden geparsed
This commit is contained in:
@@ -4,16 +4,19 @@ namespace XMLParser
|
|||||||
{
|
{
|
||||||
decimal sohlhoeheZulauf;
|
decimal sohlhoeheZulauf;
|
||||||
decimal sohlhoeheAblauf;
|
decimal sohlhoeheAblauf;
|
||||||
string knotenZulauf;
|
Knoten knotenZulauf;
|
||||||
string knotenAblauf;
|
Knoten knotenAblauf;
|
||||||
int knotenAblaufTyp;
|
int knotenAblaufTyp;
|
||||||
int knotenZulaufTyp;
|
int knotenZulaufTyp;
|
||||||
bool isFiktiveLeitung = true;
|
bool isFiktiveLeitung = true;
|
||||||
|
|
||||||
|
public string knotenZulaufTemp;
|
||||||
|
public string knotenAblaufTemp;
|
||||||
|
|
||||||
public decimal SohlhoeheZulauf { get => sohlhoeheZulauf; set => sohlhoeheZulauf = value; }
|
public decimal SohlhoeheZulauf { get => sohlhoeheZulauf; set => sohlhoeheZulauf = value; }
|
||||||
public decimal SohlhoeheAblauf { get => sohlhoeheAblauf; set => sohlhoeheAblauf = value; }
|
public decimal SohlhoeheAblauf { get => sohlhoeheAblauf; set => sohlhoeheAblauf = value; }
|
||||||
public string KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; }
|
public Knoten KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; }
|
||||||
public string KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; }
|
public Knoten KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; }
|
||||||
public int KnotenAblaufTyp { get => knotenAblaufTyp; set => knotenAblaufTyp = value; }
|
public int KnotenAblaufTyp { get => knotenAblaufTyp; set => knotenAblaufTyp = value; }
|
||||||
public int KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; }
|
public int KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; }
|
||||||
public bool IsFiktiveLeitung { get => isFiktiveLeitung; set => isFiktiveLeitung = value; }
|
public bool IsFiktiveLeitung { get => isFiktiveLeitung; set => isFiktiveLeitung = value; }
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
namespace XMLParser
|
namespace XMLParser
|
||||||
{
|
{
|
||||||
internal class Knoten
|
public class Knoten
|
||||||
{
|
{
|
||||||
EKnotenTyp knotenTyp;
|
EKnotenTyp knotenTyp;
|
||||||
Anschlusspunkt anschlusspunkt;
|
Anschlusspunkt anschlusspunkt;
|
||||||
|
|||||||
@@ -8,45 +8,76 @@ using System.Xml;
|
|||||||
|
|
||||||
namespace XMLParser
|
namespace XMLParser
|
||||||
{
|
{
|
||||||
public static class XMLParser
|
public class XMLParser
|
||||||
{
|
{
|
||||||
public static List<KanalObjekt> ParseFile(string xmldatei)
|
private List<AbwassertechnischeAnlage> stammdaten = null;
|
||||||
{
|
private List<InspizierteAbwassertechnischeAnlage> inspektionsdaten = null;
|
||||||
Tuple<List<AbwassertechnischeAnlage>,List<InspizierteAbwassertechnischeAnlage>> src = LoadFile(xmldatei);
|
private XmlNamespaceManager manager = null;
|
||||||
List<AbwassertechnischeAnlage> Stammdaten = src.Item1.FindAll(x => x.ObjektArt.Equals(EObjektArt.KNOTEN));
|
private XmlNode rootChild = null;
|
||||||
List<InspizierteAbwassertechnischeAnlage> Inspektionsdaten = src.Item2;
|
private List<KanalObjekt> kanalObjekte = null;
|
||||||
|
private Queue<AbwassertechnischeAnlage> QueueToRebuild = new Queue<AbwassertechnischeAnlage>();
|
||||||
|
|
||||||
List<KanalObjekt> kanalObjekte = new List<KanalObjekt>();
|
public List<KanalObjekt> KanalObjekte { get => kanalObjekte; private set => kanalObjekte = value; }
|
||||||
foreach(InspizierteAbwassertechnischeAnlage iat in Inspektionsdaten) {
|
|
||||||
AbwassertechnischeAnlage stammdaten = Stammdaten.Find(x => x.Objektbezeichnung.Equals(iat.Objektbezeichnung));//;
|
public XMLParser(string xmlfile)
|
||||||
kanalObjekte.Add(new KanalObjekt() {
|
{
|
||||||
Stammdaten = stammdaten,
|
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,
|
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<AbwassertechnischeAnlage> Stammdaten = new List<AbwassertechnischeAnlage>();
|
||||||
List<InspizierteAbwassertechnischeAnlage> Inspektionsdaten = new List<InspizierteAbwassertechnischeAnlage>();
|
List<InspizierteAbwassertechnischeAnlage> Inspektionsdaten = new List<InspizierteAbwassertechnischeAnlage>();
|
||||||
|
|
||||||
XmlDocument doc = new XmlDocument();
|
XmlDocument doc = new XmlDocument();
|
||||||
doc.Load(xmldatei);
|
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");
|
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);
|
Stammdaten = LoadStammdatenCollectiv();
|
||||||
Inspektionsdaten = LoadInspektionsdatenCollectiv(manager,root);
|
Inspektionsdaten = LoadInspektionsdatenCollectiv();
|
||||||
return new Tuple<List<AbwassertechnischeAnlage>, List<InspizierteAbwassertechnischeAnlage>>(Stammdaten,Inspektionsdaten);
|
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>();
|
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);
|
XmlNodeList Inspektionsdaten = zstdk.SelectNodes("//e:InspizierteAbwassertechnischeAnlage", manager);
|
||||||
|
|
||||||
foreach(XmlNode node in Inspektionsdaten) {
|
foreach(XmlNode node in Inspektionsdaten) {
|
||||||
@@ -292,10 +323,10 @@ namespace XMLParser
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<AbwassertechnischeAnlage> LoadStammdatenCollectiv(XmlNamespaceManager manager,XmlNode root)
|
private List<AbwassertechnischeAnlage> LoadStammdatenCollectiv()
|
||||||
{
|
{
|
||||||
List<AbwassertechnischeAnlage> result = new List<AbwassertechnischeAnlage>();
|
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);
|
XmlNodeList Stammdaten = zstdk.SelectNodes("//e:AbwassertechnischeAnlage", manager);
|
||||||
|
|
||||||
foreach(XmlNode node in Stammdaten)
|
foreach(XmlNode node in Stammdaten)
|
||||||
@@ -305,7 +336,7 @@ namespace XMLParser
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static AbwassertechnischeAnlage ParseStammdaten(XmlNode node)
|
private AbwassertechnischeAnlage ParseStammdaten(XmlNode node)
|
||||||
{
|
{
|
||||||
AbwassertechnischeAnlage result = new AbwassertechnischeAnlage();
|
AbwassertechnischeAnlage result = new AbwassertechnischeAnlage();
|
||||||
foreach(XmlNode aktuell in node.ChildNodes)
|
foreach(XmlNode aktuell in node.ChildNodes)
|
||||||
@@ -313,10 +344,13 @@ namespace XMLParser
|
|||||||
switch(aktuell.Name)
|
switch(aktuell.Name)
|
||||||
{
|
{
|
||||||
case "Objektbezeichnung":result.Objektbezeichnung = aktuell.InnerText;break;
|
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 "Entwaesserungsart":result.Entwaesserungsart = aktuell.InnerText;break;
|
||||||
case "Knoten":result.Knoten = parseStammdatenKnoten(aktuell); 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":
|
case "Lage":
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -325,9 +359,33 @@ namespace XMLParser
|
|||||||
return result;
|
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)
|
private static Knoten parseStammdatenKnoten(XmlNode aktuell)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ namespace XMLParserTest
|
|||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void TestMethod1()
|
public void TestMethod1()
|
||||||
{
|
{
|
||||||
var s = XMLParser.XMLParser.ParseFile("input.xml");
|
XMLParser.XMLParser xml = new XMLParser.XMLParser("input.xml");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user