From 596a5da903431cb21918e512407e21cda3e7fd6e Mon Sep 17 00:00:00 2001 From: HuskyTeufel Date: Mon, 2 Aug 2021 13:55:20 +0200 Subject: [PATCH] Initial commit --- .gitignore | 5 + .vscode/launch.json | 26 ++++ .vscode/tasks.json | 42 +++++ XMLParser.sln | 48 ++++++ XMLParser/AbwassertechnischeAnlage.cs | 20 +++ XMLParser/Anschlussdaten.cs | 19 +++ XMLParser/Anschlusspunkt.cs | 9 ++ XMLParser/Enums.cs | 52 +++++++ XMLParser/Geometrie.cs | 24 +++ XMLParser/Geometriedaten.cs | 21 +++ .../InspizierteAbwassertechnischeAnlage.cs | 83 ++++++++++ XMLParser/Kante.cs | 21 +++ XMLParser/Knoten.cs | 11 ++ XMLParser/Lage.cs | 36 +++++ XMLParser/OptischeInspektion.cs | 52 +++++++ XMLParser/PolyKante.cs | 25 +++ XMLParser/RGrunddaten.cs | 46 ++++++ XMLParser/RZustand.cs | 45 ++++++ XMLParser/Rohrleitung.cs | 76 +++++++++ XMLParser/XMLParser.cs | 146 ++++++++++++++++++ XMLParser/XMLParser.csproj | 7 + XMLParserTest/UnitTest1.cs | 14 ++ XMLParserTest/XMLParserTest.csproj | 20 +++ 23 files changed, 848 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 XMLParser.sln create mode 100644 XMLParser/AbwassertechnischeAnlage.cs create mode 100644 XMLParser/Anschlussdaten.cs create mode 100644 XMLParser/Anschlusspunkt.cs create mode 100644 XMLParser/Enums.cs create mode 100644 XMLParser/Geometrie.cs create mode 100644 XMLParser/Geometriedaten.cs create mode 100644 XMLParser/InspizierteAbwassertechnischeAnlage.cs create mode 100644 XMLParser/Kante.cs create mode 100644 XMLParser/Knoten.cs create mode 100644 XMLParser/Lage.cs create mode 100644 XMLParser/OptischeInspektion.cs create mode 100644 XMLParser/PolyKante.cs create mode 100644 XMLParser/RGrunddaten.cs create mode 100644 XMLParser/RZustand.cs create mode 100644 XMLParser/Rohrleitung.cs create mode 100644 XMLParser/XMLParser.cs create mode 100644 XMLParser/XMLParser.csproj create mode 100644 XMLParserTest/UnitTest1.cs create mode 100644 XMLParserTest/XMLParserTest.csproj diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c26dbd9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/XMLParser/bin/* +/XMLParser/obj/* +/XMLParserTest/bin/Debug/* +/XMLParserTest/obj/Debug/* +/XMLParserTest/obj/* diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..7733390 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,26 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "name": ".NET Core Launch (console)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/XMLParserTest/bin/Debug/net5.0/XMLParserTest.dll", + "args": [], + "cwd": "${workspaceFolder}/XMLParserTest", + // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console + "console": "internalConsole", + "stopAtEntry": false + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..5ca9aed --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/XMLParserTest/XMLParserTest.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/XMLParserTest/XMLParserTest.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/XMLParserTest/XMLParserTest.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/XMLParser.sln b/XMLParser.sln new file mode 100644 index 0000000..01eb839 --- /dev/null +++ b/XMLParser.sln @@ -0,0 +1,48 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.6.30114.105 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLParser", "XMLParser\XMLParser.csproj", "{55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XMLParserTest", "XMLParserTest\XMLParserTest.csproj", "{089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Debug|x64.ActiveCfg = Debug|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Debug|x64.Build.0 = Debug|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Debug|x86.ActiveCfg = Debug|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Debug|x86.Build.0 = Debug|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Release|Any CPU.Build.0 = Release|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Release|x64.ActiveCfg = Release|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Release|x64.Build.0 = Release|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Release|x86.ActiveCfg = Release|Any CPU + {55DEEE0A-8AED-403B-B2C7-F8EEAA45ED1F}.Release|x86.Build.0 = Release|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Debug|Any CPU.Build.0 = Debug|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Debug|x64.ActiveCfg = Debug|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Debug|x64.Build.0 = Debug|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Debug|x86.ActiveCfg = Debug|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Debug|x86.Build.0 = Debug|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Release|Any CPU.ActiveCfg = Release|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Release|Any CPU.Build.0 = Release|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Release|x64.ActiveCfg = Release|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Release|x64.Build.0 = Release|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Release|x86.ActiveCfg = Release|Any CPU + {089D18AE-F5F0-4371-BC0A-AEF00FBBFB55}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/XMLParser/AbwassertechnischeAnlage.cs b/XMLParser/AbwassertechnischeAnlage.cs new file mode 100644 index 0000000..bd19c77 --- /dev/null +++ b/XMLParser/AbwassertechnischeAnlage.cs @@ -0,0 +1,20 @@ +namespace XMLParser +{ + internal class AbwassertechnischeAnlage + { + string objektbezeichnung; + EObjektArt objektArt; + string entwaesserungsart; + Kante kante; + Knoten knoten; + Geometrie geometrie; + + + public string Objektbezeichnung { get => objektbezeichnung; set => objektbezeichnung = value; } + public EObjektArt ObjektArt { get => objektArt; set => objektArt = value; } + public string Entwaesserungsart { get => entwaesserungsart; set => entwaesserungsart = value; } + public Kante Kante { get => kante; set => kante = value; } + public Geometrie Geometrie { get => geometrie; set => geometrie = value; } + internal Knoten Knoten { get => knoten; set => knoten = value; } + } +} \ No newline at end of file diff --git a/XMLParser/Anschlussdaten.cs b/XMLParser/Anschlussdaten.cs new file mode 100644 index 0000000..b5766b5 --- /dev/null +++ b/XMLParser/Anschlussdaten.cs @@ -0,0 +1,19 @@ +namespace XMLParser +{ + public class Anschlussdaten + { + string objektbezeichnung; + EKantenTyp kantentyp; + decimal entfernung; + string anschlussArt; + string fixierung; + string kommentar; + + public string Objektbezeichnung { get => objektbezeichnung; set => objektbezeichnung = value; } + public EKantenTyp Kantentyp { get => kantentyp; set => kantentyp = value; } + public decimal Entfernung { get => entfernung; set => entfernung = value; } + public string AnschlussArt { get => anschlussArt; set => anschlussArt = value; } + public string Fixierung { get => fixierung; set => fixierung = value; } + public string Kommentar { get => kommentar; set => kommentar = value; } + } +} diff --git a/XMLParser/Anschlusspunkt.cs b/XMLParser/Anschlusspunkt.cs new file mode 100644 index 0000000..3a4b64a --- /dev/null +++ b/XMLParser/Anschlusspunkt.cs @@ -0,0 +1,9 @@ +namespace XMLParser +{ + internal class Anschlusspunkt + { + string punktkennung; + + public string Punktkennung { get => punktkennung; set => punktkennung = value; } + } +} \ No newline at end of file diff --git a/XMLParser/Enums.cs b/XMLParser/Enums.cs new file mode 100644 index 0000000..e4217cb --- /dev/null +++ b/XMLParser/Enums.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace XMLParser +{ + public enum EAnlagetyp + { + Haltung = 1, + Anschlussleitung = 2, + Schacht = 3, + Bauwerk = 4 + } + public enum EInspektionverfahren + { + TVUntersuchung, + Begehung, + VomSchacht, + Other + } + public enum EWetter + { + KEINNIEDERSCHLAG = 1, + REGEN = 2, + SCHNEE = 3 + } + public enum ERohrleitungstyp + { + HALTUNG, + LEITUNG + } + public enum EObjektArt + { + KANTE = 1, + KNOTEN = 2 + } + public enum EKnotenTyp + { + SCHACHT = 0, + ANSCHLUSSPUNKT = 1, + BAUWERK = 2 + } + public enum EKantenTyp + { + HALTUNG, + LEITUNG, + RINNE, + GERINNE + } +} diff --git a/XMLParser/Geometrie.cs b/XMLParser/Geometrie.cs new file mode 100644 index 0000000..078650a --- /dev/null +++ b/XMLParser/Geometrie.cs @@ -0,0 +1,24 @@ +namespace XMLParser +{ + public class Geometrie + { + Geometriedaten geometriedaten; + PolyKanteAttribute rap1; + PolyKanteAttribute rap2; + + public Geometriedaten Geometriedaten + { + get + { + return geometriedaten; + } + set + { + geometriedaten = value; + } + } + + public PolyKanteAttribute Rap1 { get => rap1; set => rap1 = value; } + public PolyKanteAttribute Rap2 { get => rap2; set => rap2 = value; } + } +} \ No newline at end of file diff --git a/XMLParser/Geometriedaten.cs b/XMLParser/Geometriedaten.cs new file mode 100644 index 0000000..ed946b9 --- /dev/null +++ b/XMLParser/Geometriedaten.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; + +namespace XMLParser +{ + public class Geometriedaten + { + List kanten; + + public List Kanten + { + get + { + return kanten; + } + set + { + kanten = value; + } + } + } +} \ No newline at end of file diff --git a/XMLParser/InspizierteAbwassertechnischeAnlage.cs b/XMLParser/InspizierteAbwassertechnischeAnlage.cs new file mode 100644 index 0000000..7b280b2 --- /dev/null +++ b/XMLParser/InspizierteAbwassertechnischeAnlage.cs @@ -0,0 +1,83 @@ +namespace XMLParser +{ + public sealed class InspizierteAbwassertechnischeAnlage + { + string objektbezeichnung; + Lage lage; + Kante kante; + Geometrie geometrie; + EAnlagetyp anlagentyp; + OptischeInspektion optischeInspektion; + + public string Objektbezeichnung + { + get + { + return objektbezeichnung; + } + set + { + objektbezeichnung = value; + } + } + public Kante Kante + { + get + { + return kante; + } + set + { + kante = value; + } + } + public Geometrie Geometrie + { + get + { + return geometrie; + } + set + { + geometrie = value; + } + } + public EAnlagetyp Anlagentyp + { + get + { + return anlagentyp; + } + set + { + anlagentyp = value; + } + } + public OptischeInspektion OptischeInspektion + { + get + { + return optischeInspektion; + } + set + { + optischeInspektion = value; + } + } + public Lage Lage + { + get + { + return lage; + } + set + { + lage = value; + } + } + public override string ToString() + { + return objektbezeichnung; + } + } +} diff --git a/XMLParser/Kante.cs b/XMLParser/Kante.cs new file mode 100644 index 0000000..4482a1e --- /dev/null +++ b/XMLParser/Kante.cs @@ -0,0 +1,21 @@ +namespace XMLParser +{ + public class Kante + { + decimal sohlhoeheZulauf; + decimal sohlhoeheAblauf; + string knotenZulauf; + string knotenAblauf; + int knotenAblaufTyp; + int knotenZulaufTyp; + bool isFiktiveLeitung = true; + + public decimal SohlhoeheZulauf { get => sohlhoeheZulauf; set => sohlhoeheZulauf = value; } + public decimal SohlhoeheAblauf { get => sohlhoeheAblauf; set => sohlhoeheAblauf = value; } + public string KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; } + public string KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; } + public int KnotenAblaufTyp { get => knotenAblaufTyp; set => knotenAblaufTyp = value; } + public int KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; } + public bool IsFiktiveLeitung { get => isFiktiveLeitung; set => isFiktiveLeitung = value; } + } +} \ No newline at end of file diff --git a/XMLParser/Knoten.cs b/XMLParser/Knoten.cs new file mode 100644 index 0000000..df1c409 --- /dev/null +++ b/XMLParser/Knoten.cs @@ -0,0 +1,11 @@ +namespace XMLParser +{ + internal class Knoten + { + EKnotenTyp knotenTyp; + Anschlusspunkt anschlusspunkt; + + public EKnotenTyp KnotenTyp { get => knotenTyp; set => knotenTyp = value; } + internal Anschlusspunkt Anschlusspunkt { get => anschlusspunkt; set => anschlusspunkt = value; } + } +} \ No newline at end of file diff --git a/XMLParser/Lage.cs b/XMLParser/Lage.cs new file mode 100644 index 0000000..a5d40d8 --- /dev/null +++ b/XMLParser/Lage.cs @@ -0,0 +1,36 @@ +namespace XMLParser +{ + public class Lage + { + string strassename; + string ortname; + + public string Strassename + { + get + { + return strassename; + } + set + { + strassename = value; + } + } + public string Ortname + { + get + { + return ortname; + } + set + { + ortname = value; + } + } + public Lage(string strassename, string ortname) + { + this.strassename = strassename; + this.ortname = ortname; + } + } +} \ No newline at end of file diff --git a/XMLParser/OptischeInspektion.cs b/XMLParser/OptischeInspektion.cs new file mode 100644 index 0000000..3473ae0 --- /dev/null +++ b/XMLParser/OptischeInspektion.cs @@ -0,0 +1,52 @@ +using System; + +namespace XMLParser +{ + public class OptischeInspektion + { + DateTime inspektionstime; + Rohrleitung rohrleitung; + + public DateTime Inspektionstime + { + set + { + inspektionstime = value; + } + get + { + return inspektionstime; + } + } + public string Inspektionsdatum + { + get + { + return inspektionstime.ToShortDateString(); + } + /*set + { + throw new NotImplementedException(); + //inspektionsdatum = value; + }*/ + } + public string Inspektionszeit + { + get + { + return inspektionstime.ToShortTimeString(); + } + } + public Rohrleitung Rohrleitung + { + get + { + return rohrleitung; + } + set + { + rohrleitung = value; + } + } + } +} diff --git a/XMLParser/PolyKante.cs b/XMLParser/PolyKante.cs new file mode 100644 index 0000000..2a630e1 --- /dev/null +++ b/XMLParser/PolyKante.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +namespace XMLParser +{ + public class PolyKante + { + PolyKanteAttribute start; + PolyKanteAttribute ende; + + public PolyKanteAttribute Start { get => start; set => start = value; } + public PolyKanteAttribute Ende { get => ende; set => ende = value; } + } + + public class PolyKanteAttribute + { + decimal rechtswert; + decimal hochwert; + decimal punkthoehe; + string punktattributAbwasser; + + public decimal Rechtswert { get => rechtswert; set => rechtswert = value; } + public decimal Hochwert { get => hochwert; set => hochwert = value; } + public decimal Punkthoehe { get => punkthoehe; set => punkthoehe = value; } + public string PunktattributAbwasser { get => punktattributAbwasser; set => punktattributAbwasser = value; } + } +} \ No newline at end of file diff --git a/XMLParser/RGrunddaten.cs b/XMLParser/RGrunddaten.cs new file mode 100644 index 0000000..d09c349 --- /dev/null +++ b/XMLParser/RGrunddaten.cs @@ -0,0 +1,46 @@ +namespace XMLParser +{ + public class RGrunddaten + { + string knotenZulauf; + EKnotenTyp knotenZulaufTyp; + string knotenAblauf; + EKnotenTyp knotenAblaufTyp; + int profilhoehe; + int profilbreite; + int profilart; + string material; + string kanalart; + Anschlussdaten anschlussddaten = null; + int herkunftProfilmasse; + int herkunftMaterial; + decimal regeleinzelrohrlaenge; + int artAuskleidung; + string innenschutz; + + public string KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; } + public EKnotenTyp KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; } + public string KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; } + public EKnotenTyp KnotenAblaufTyp { get => knotenAblaufTyp; set => knotenAblaufTyp = value; } + public int Profilhoehe { get => profilhoehe; set => profilhoehe = value; } + public int Profilbreite { get => profilbreite; set => profilbreite = value; } + public int Profilart { get => profilart; set => profilart = value; } + public string Material { get => material; set => material = value; } + public string Kanalart { get => kanalart; set => kanalart = value; } + public Anschlussdaten Anschlussddaten { get => anschlussddaten; set => anschlussddaten = value; } + public int HerkunftProfilmasse { get => herkunftProfilmasse; set => herkunftProfilmasse = value; } + public int HerkunftMaterial { get => herkunftMaterial; set => herkunftMaterial = value; } + public decimal Regeleinzelrohrlaenge { get => regeleinzelrohrlaenge; set => regeleinzelrohrlaenge = value; } + public int ArtAuskleidung { get => artAuskleidung; set => artAuskleidung = value; } + + public bool HasGrundleitung + { + get + { + return anschlussddaten != null; + } + } + + public string Innenschutz { get => innenschutz; set => innenschutz = value; } + } +} \ No newline at end of file diff --git a/XMLParser/RZustand.cs b/XMLParser/RZustand.cs new file mode 100644 index 0000000..4589e21 --- /dev/null +++ b/XMLParser/RZustand.cs @@ -0,0 +1,45 @@ +namespace XMLParser +{ + public struct Quantifizierung + { + public decimal Numerisch; + public string Text; + + public override string ToString() + { + if (Text != null) + return Text; + if (Numerisch == 0) + return ""; + return Numerisch.ToString(); + } + } + public class RZustand + { + decimal station; + string inspektionskode; + string charakterisierung1; + string charakterisierung2; + bool verbindung; + Quantifizierung quantifizierung1; + Quantifizierung quantifizierung2; + string streckenschaden; + int streckenschadennr; + int positionVon; + int positionBis; + string kommentar; + + public decimal Station { get => station; set => station = value; } + public string Inspektionskode { get => inspektionskode; set => inspektionskode = value; } + public string Charakterisierung1 { get => charakterisierung1; set => charakterisierung1 = value; } + public string Charakterisierung2 { get => charakterisierung2; set => charakterisierung2 = value; } + public bool Verbindung { get => verbindung; set => verbindung = value; } + public Quantifizierung Quantifizierung1 { get => quantifizierung1; set => quantifizierung1 = value; } + public Quantifizierung Quantifizierung2 { get => quantifizierung2; set => quantifizierung2 = value; } + public string Streckenschaden { get => streckenschaden; set => streckenschaden = value; } + public int Streckenschadennr { get => streckenschadennr; set => streckenschadennr = value; } + public int PositionVon { get => positionVon; set => positionVon = value; } + public int PositionBis { get => positionBis; set => positionBis = value; } + public string Kommentar { get => kommentar; set => kommentar = value; } + } +} diff --git a/XMLParser/Rohrleitung.cs b/XMLParser/Rohrleitung.cs new file mode 100644 index 0000000..3ac1914 --- /dev/null +++ b/XMLParser/Rohrleitung.cs @@ -0,0 +1,76 @@ +using System.Collections.Generic; + +namespace XMLParser +{ + public class Rohrleitung + { + ERohrleitungstyp rohrleitungstyp; + decimal inspektionslaenge; + string inspektionsrichtung; + RGrunddaten grunddaten = null; + List zustaende = null; + + public ERohrleitungstyp Rohrleitungstyp + { + get + { + return rohrleitungstyp; + } + set + { + rohrleitungstyp = value; + } + } + + public decimal Inspektionslaenge + { + get + { + return inspektionslaenge; + } + set + { + inspektionslaenge = value; + } + } + public string Inspektionsrichtung + { + get + { + switch(inspektionsrichtung) + { + case "U": return "Gegen Fliessrichtung"; + case "O": return "In Fliessrichtung"; + default: return "Fliessrichtungangabe nicht bekannt(" + inspektionsrichtung + ")"; + } + + } + set + { + inspektionsrichtung = value; + } + } + public List Zustaende + { + get + { + return zustaende; + } + set + { + zustaende = value; + } + } + public RGrunddaten Grunddaten + { + get + { + return grunddaten; + } + set + { + grunddaten = value; + } + } + } +} diff --git a/XMLParser/XMLParser.cs b/XMLParser/XMLParser.cs new file mode 100644 index 0000000..e7ce625 --- /dev/null +++ b/XMLParser/XMLParser.cs @@ -0,0 +1,146 @@ +using System; +using System.Diagnostics; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml; + +namespace XMLParser +{ + public static class XMLParser + { + public static void LoadFile(string xmldatei) { + List Stammdaten = new List(); + List Inspektionsdaten = new List(); + + XmlDocument doc = new XmlDocument(); + doc.Load(xmldatei); + XmlNode rootChild = doc.LastChild; + + XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable); + manager.AddNamespace("e", "http://www.ofd-hannover.la/Identifikation"); + XmlNode root = rootChild.SelectSingleNode("//e:Datenkollektive", manager); + + Stammdaten = LoadStammdatenCollectiv(manager, root); + Inspektionsdaten = LoadInspektionsdatenCollectiv(manager,root); + } + + private static List LoadInspektionsdatenCollectiv(XmlNamespaceManager manager, XmlNode root) + { + List result = new List(); + XmlNode zstdk = root.SelectSingleNode("//e:Zustandsdatenkollektiv", manager); + XmlNodeList Inspektionsdaten = zstdk.SelectNodes("//e:InspizierteAbwassertechnischeAnlage", manager); + + foreach(XmlNode node in Inspektionsdaten) { + result.Add(ParseInspektion(node)); + } + + return result; + } + + private static InspizierteAbwassertechnischeAnlage ParseInspektion(XmlNode node) + { + XmlNode intOptischeInspektion = null; + //XmlNode intRohrleitung = null; + + //XmlNode intRGrunddaten = null; + //XmlNode intInspektionsdaten = null; + XmlNode intKanten = null; + XmlNode intGeometrie = null; + + InspizierteAbwassertechnischeAnlage result = new InspizierteAbwassertechnischeAnlage(); + foreach (XmlNode d in node.ChildNodes) + { + switch (d.Name) + { + case "Objektbezeichnung": + result.Objektbezeichnung = d.InnerText; + // if (d.InnerText.Equals("44903796")) Debugger.Break(); + break; + case "Anlagentyp": + result.Anlagentyp = (EAnlagetyp)Convert.ToInt32(d.InnerText); //anlagentyp = Convert.ToInt32(d.InnerText); + break; + + case "Kante": + intKanten = d; + //Debugger.Break(); + break; + case "Geometrie": + intGeometrie = d; + break; + case "Lage": + //throw new NotImplementedException(); + if (!d.HasChildNodes) break; + string strassename =""; + string ortname = ""; + foreach (XmlNode _temp in d.ChildNodes) + { + switch (_temp.Name) + { + case "Strassenname": strassename = _temp.InnerText; break; + case "Ortsteilname": ortname = _temp.InnerText; break; + case "LageOberflaeche": break; + default: break; + //default: throw new NotImplementedException(_temp.Name); + } + } + result.Lage = new Lage(strassename, ortname); + break; + case "OptischeInspektion": + intOptischeInspektion = d; + break; + + } + } + return result; + } + + private static List LoadStammdatenCollectiv(XmlNamespaceManager manager,XmlNode root) + { + List result = new List(); + XmlNode zstdk = root.SelectSingleNode("//e:Stammdatenkollektiv", manager); + XmlNodeList Stammdaten = zstdk.SelectNodes("//e:AbwassertechnischeAnlage", manager); + + foreach(XmlNode node in Stammdaten) + { + result.Add(ParseStammdaten(node)); + } + return result; + } + + private static AbwassertechnischeAnlage ParseStammdaten(XmlNode node) + { + AbwassertechnischeAnlage result = new AbwassertechnischeAnlage(); + foreach(XmlNode aktuell in node.ChildNodes) + { + switch(aktuell.Name) + { + case "Objektbezeichnung":result.Objektbezeichnung = aktuell.InnerText;break; + case "Objektart":result.ObjektArt = (EObjektArt)Convert.ToInt32(aktuell.InnerText); break; + case "Entwaesserungsart":result.Entwaesserungsart = aktuell.InnerText;break; + case "Knoten":result.Knoten = parseStammdatenKnoten(aktuell); break; + case "Lage": + break; + } + } + + return result; + } + + private static Knoten parseStammdatenKnoten(XmlNode aktuell) + { + Knoten result = new Knoten(); + foreach(XmlNode s in aktuell.ChildNodes) + { + switch(s.Name) + { + case "KnotenTyp": result.KnotenTyp = (EKnotenTyp)Convert.ToInt32(s.InnerText);break; + case "Anschlusspunkt": result.Anschlusspunkt = new Anschlusspunkt() { Punktkennung = s.InnerText }; break; + } + } + + return result; + } + } +} diff --git a/XMLParser/XMLParser.csproj b/XMLParser/XMLParser.csproj new file mode 100644 index 0000000..f208d30 --- /dev/null +++ b/XMLParser/XMLParser.csproj @@ -0,0 +1,7 @@ + + + + net5.0 + + + diff --git a/XMLParserTest/UnitTest1.cs b/XMLParserTest/UnitTest1.cs new file mode 100644 index 0000000..bfd0082 --- /dev/null +++ b/XMLParserTest/UnitTest1.cs @@ -0,0 +1,14 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace XMLParserTest +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + XMLParser.XMLParser.LoadFile("input.xml"); + } + } +} diff --git a/XMLParserTest/XMLParserTest.csproj b/XMLParserTest/XMLParserTest.csproj new file mode 100644 index 0000000..3289cf6 --- /dev/null +++ b/XMLParserTest/XMLParserTest.csproj @@ -0,0 +1,20 @@ + + + + net5.0 + + false + + + + + + + + + + + + + +