KlassenDLL im Main integriert

This commit is contained in:
HuskyTeufel
2022-04-20 14:59:34 +02:00
parent 70ec1019cd
commit d2537d1a75
122 changed files with 16199 additions and 1165 deletions

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public class Anschlussdaten
{
string objektbezeichnung;
EKantenTyp kantentyp;
decimal entfernung;
string anschlussArt;
string fixierung;
string kommentar;
/// <summary>
///
/// </summary>
public string Objektbezeichnung { get => objektbezeichnung; set => objektbezeichnung = value; }
/// <summary>
///
/// </summary>
public EKantenTyp Kantentyp { get => kantentyp; set => kantentyp = value; }
/// <summary>
///
/// </summary>
public decimal Entfernung { get => entfernung; set => entfernung = value; }
/// <summary>
///
/// </summary>
public string AnschlussArt { get => anschlussArt; set => anschlussArt = value; }
/// <summary>
///
/// </summary>
public string Fixierung { get => fixierung; set => fixierung = value; }
/// <summary>
///
/// </summary>
public string Kommentar { get => kommentar; set => kommentar = value; }
}
}

View File

@@ -0,0 +1,112 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public enum EAnlagetyp
{
/// <summary>
///
/// </summary>
Haltung = 1,
/// <summary>
///
/// </summary>
Anschlussleitung = 2,
/// <summary>
///
/// </summary>
Schacht = 3,
/// <summary>
///
/// </summary>
Bauwerk = 4
}
/// <summary>
///
/// </summary>
enum EInspektionverfahren
{
TVUntersuchung,
Begehung,
VomSchacht,
Other
}
/// <summary>
///
/// </summary>
enum EWetter
{
KEINNIEDERSCHLAG = 1,
REGEN = 2,
SCHNEE = 3
}
/// <summary>
///
/// </summary>
public enum ERohrleitungstyp
{
/// <summary>
///
/// </summary>
HALTUNG,
/// <summary>
///
/// </summary>
LEITUNG
}
/// <summary>
///
/// </summary>
enum EObjektArt
{
KANTE = 1,
KNOTEN = 2
}
/// <summary>
///
/// </summary>
public enum EKnotenTyp
{
/// <summary>
///
/// </summary>
SCHACHT = 0,
/// <summary>
///
/// </summary>
ANSCHLUSSPUNKT = 1,
/// <summary>
///
/// </summary>
BAUWERK = 2
}
/// <summary>
///
/// </summary>
public enum EKantenTyp
{
/// <summary>
///
/// </summary>
HALTUNG,
/// <summary>
///
/// </summary>
LEITUNG,
/// <summary>
///
/// </summary>
RINNE,
/// <summary>
///
/// </summary>
GERINNE
}
}

View File

@@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public sealed class InspizierteAbwassertechnischeAnlage
{
string objektbezeichnung;
Lage lage;
EAnlagetyp anlagentyp;
OptischeInspektion optischeInspektion;
/// <summary>
///
/// </summary>
public string Objektbezeichnung
{
get
{
return objektbezeichnung;
}
set
{
objektbezeichnung = value;
}
}
/// <summary>
///
/// </summary>
public EAnlagetyp Anlagentyp
{
get
{
return anlagentyp;
}
set
{
anlagentyp = value;
}
}
/// <summary>
///
/// </summary>
public OptischeInspektion OptischeInspektion
{
get
{
return optischeInspektion;
}
set
{
optischeInspektion = value;
}
}
/// <summary>
///
/// </summary>
public Lage Lage
{
get
{
return lage;
}
set
{
lage = value;
}
}
/// <summary>
///
/// </summary>
public override string ToString()
{
return objektbezeichnung;
}
}
}

View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public class Lage
{
string strassename;
string ortname;
/// <summary>
///
/// </summary>
public string Strassename
{
get
{
return strassename;
}
set
{
strassename = value;
}
}
/// <summary>
///
/// </summary>
public string Ortname
{
get
{
return ortname;
}
set
{
ortname = value;
}
}
/// <summary>
///
/// </summary>
/// <param name="strassename"></param>
/// <param name="ortname"></param>
public Lage(string strassename, string ortname)
{
this.strassename = strassename;
this.ortname = ortname;
}
}
}

View File

@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public class OptischeInspektion
{
DateTime inspektionstime;
Rohrleitung rohrleitung;
/// <summary>
///
/// </summary>
public DateTime Inspektionstime
{
set
{
inspektionstime = value;
}
get
{
return inspektionstime;
}
}
/// <summary>
///
/// </summary>
public string Inspektionsdatum
{
get
{
return inspektionstime.ToShortDateString();
}
/*set
{
throw new NotImplementedException();
//inspektionsdatum = value;
}*/
}
/// <summary>
///
/// </summary>
public string Inspektionszeit
{
get
{
return inspektionstime.ToShortTimeString();
}
}
/// <summary>
///
/// </summary>
public Rohrleitung Rohrleitung
{
get
{
return rohrleitung;
}
set
{
rohrleitung = value;
}
}
}
}

View File

@@ -0,0 +1,100 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
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;
/// <summary>
///
/// </summary>
public string KnotenZulauf { get => knotenZulauf; set => knotenZulauf = value; }
/// <summary>
///
/// </summary>
public EKnotenTyp KnotenZulaufTyp { get => knotenZulaufTyp; set => knotenZulaufTyp = value; }
/// <summary>
///
/// </summary>
public string KnotenAblauf { get => knotenAblauf; set => knotenAblauf = value; }
/// <summary>
///
/// </summary>
public EKnotenTyp KnotenAblaufTyp { get => knotenAblaufTyp; set => knotenAblaufTyp = value; }
/// <summary>
///
/// </summary>
public int Profilhoehe { get => profilhoehe; set => profilhoehe = value; }
/// <summary>
///
/// </summary>
public int Profilbreite { get => profilbreite; set => profilbreite = value; }
/// <summary>
///
/// </summary>
public int Profilart { get => profilart; set => profilart = value; }
/// <summary>
///
/// </summary>
public string Material { get => material; set => material = value; }
/// <summary>
///
/// </summary>
public string Kanalart { get => kanalart; set => kanalart = value; }
/// <summary>
///
/// </summary>
public Anschlussdaten Anschlussddaten { get => anschlussddaten; set => anschlussddaten = value; }
/// <summary>
///
/// </summary>
public int HerkunftProfilmasse { get => herkunftProfilmasse; set => herkunftProfilmasse = value; }
/// <summary>
///
/// </summary>
public int HerkunftMaterial { get => herkunftMaterial; set => herkunftMaterial = value; }
/// <summary>
///
/// </summary>
public decimal Regeleinzelrohrlaenge { get => regeleinzelrohrlaenge; set => regeleinzelrohrlaenge = value; }
/// <summary>
///
/// </summary>
public int ArtAuskleidung { get => artAuskleidung; set => artAuskleidung = value; }
/// <summary>
///
/// </summary>
public bool HasGrundleitung
{
get
{
return anschlussddaten != null;
}
}
/// <summary>
///
/// </summary>
public string Innenschutz { get => innenschutz; set => innenschutz = value; }
}
}

View File

@@ -0,0 +1,102 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public struct Quantifizierung
{
/// <summary>
///
/// </summary>
public decimal Numerisch;
/// <summary>
///
/// </summary>
public string Text;
/// <summary>
///
/// </summary>
public override string ToString()
{
if (Text != null)
return Text;
if (Numerisch == 0)
return "";
return Numerisch.ToString();
}
}
/// <summary>
///
/// </summary>
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;
/// <summary>
///
/// </summary>
public decimal Station { get => station; set => station = value; }
/// <summary>
///
/// </summary>
public string Inspektionskode { get => inspektionskode; set => inspektionskode = value; }
/// <summary>
///
/// </summary>
public string Charakterisierung1 { get => charakterisierung1; set => charakterisierung1 = value; }
/// <summary>
///
/// </summary>
public string Charakterisierung2 { get => charakterisierung2; set => charakterisierung2 = value; }
/// <summary>
///
/// </summary>
public bool Verbindung { get => verbindung; set => verbindung = value; }
/// <summary>
///
/// </summary>
public Quantifizierung Quantifizierung1 { get => quantifizierung1; set => quantifizierung1 = value; }
/// <summary>
///
/// </summary>
public Quantifizierung Quantifizierung2 { get => quantifizierung2; set => quantifizierung2 = value; }
/// <summary>
///
/// </summary>
public string Streckenschaden { get => streckenschaden; set => streckenschaden = value; }
/// <summary>
///
/// </summary>
public int Streckenschadennr { get => streckenschadennr; set => streckenschadennr = value; }
/// <summary>
///
/// </summary>
public int PositionVon { get => positionVon; set => positionVon = value; }
/// <summary>
///
/// </summary>
public int PositionBis { get => positionBis; set => positionBis = value; }
/// <summary>
///
/// </summary>
public string Kommentar { get => kommentar; set => kommentar = value; }
}
}

View File

@@ -0,0 +1,96 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public class Rohrleitung
{
ERohrleitungstyp rohrleitungstyp;
decimal inspektionslaenge;
string inspektionsrichtung;
RGrunddaten grunddaten = null;
List<RZustand> zustaende = null;
/// <summary>
///
/// </summary>
public ERohrleitungstyp Rohrleitungstyp
{
get
{
return rohrleitungstyp;
}
set
{
rohrleitungstyp = value;
}
}
/// <summary>
///
/// </summary>
public decimal Inspektionslaenge
{
get
{
return inspektionslaenge;
}
set
{
inspektionslaenge = value;
}
}
/// <summary>
///
/// </summary>
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;
}
}
/// <summary>
///
/// </summary>
public List<RZustand> Zustaende
{
get
{
return zustaende;
}
set
{
zustaende = value;
}
}
/// <summary>
///
/// </summary>
public RGrunddaten Grunddaten
{
get
{
return grunddaten;
}
set
{
grunddaten = value;
}
}
}
}

View File

@@ -0,0 +1,289 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- XML-Schema f<>r ISYBAU-Austauschformat Datenbereich Betriebsdaten -->
<!-- Letzte Bearbeitung: 31.08.2007 -->
<!-- Formatversion 0610 -->
<xsd:schema xmlns="http://www.ofd-hannover.la/Identifikation" xmlns:isy="http://www.ofd-hannover.la/Identifikation" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ofd-hannover.la/Identifikation" elementFormDefault="qualified">
<xsd:include schemaLocation=".\0610-referenzlisten.xsd"/>
<xsd:annotation>
<xsd:documentation xml:lang="de">ISYBAU-Austauschformat Datenbereich Betriebsdaten</xsd:documentation>
</xsd:annotation>
<xsd:complexType name="BetriebsdatenType">
<xsd:sequence>
<xsd:element name="Kennung">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Beschreibung" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Beobachtungen" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Grundwasser" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GWMessstelle" type="GWMessstelleType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Boden" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bodenkennwerte" type="BodenkennwerteType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DokumenteType">
<xsd:sequence>
<xsd:element name="Dokumentname">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Dateiname">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Dokumentquelle">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Kommentar" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="GWMessstelleType">
<xsd:sequence>
<xsd:element name="Bezeichnung">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Erlaeuterung" type="xsd:token" minOccurs="0"/>
<xsd:element name="Erstellungsdatum" type="xsd:date" minOccurs="0"/>
<xsd:element name="Umfeld">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Bodenkennwerte" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Standort" type="StandortType" minOccurs="0"/>
<xsd:element name="NwPeilrohr" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:totalDigits value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="HoeheROK" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="6"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Filterbeginn" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Filterende" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Endteufe" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Zyklus" type="BeobachtungszyklusGWType" minOccurs="0"/>
<xsd:element name="Messungen" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Messung" type="MessungType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Dokumente" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Dokument" type="DokumenteType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MessungType">
<xsd:sequence>
<xsd:element name="Ablesedatum" type="xsd:date" minOccurs="0"/>
<xsd:element name="Messwert">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Kommentar" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BodenkennwerteType">
<xsd:sequence>
<xsd:element name="Bezeichnung">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Erlaeuterung" type="xsd:token" minOccurs="0"/>
<xsd:element name="Umfeld">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Standort" type="StandortType" minOccurs="0"/>
<xsd:element name="ArtUntersuchung" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="UntersuchungBodenType"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="GWFlurabstand" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="5"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="massgBodenart" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="massgKfWert" type="xsd:double" minOccurs="0"/>
<xsd:element name="Bodenschichten" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Bodenschicht" type="BodenschichtType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Dokumente" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Dokument" type="DokumenteType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BodenschichtType">
<xsd:sequence>
<xsd:element name="obereSchichtgrenze" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="untereSchichtgrenze" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="4"/>
<xsd:fractionDigits value="2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Bodenart" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="KfWert" type="xsd:double" minOccurs="0"/>
<xsd:element name="Bestimmungsmethode" type="BestimmungkfType" minOccurs="0"/>
<xsd:element name="Kommentar" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StandortType">
<xsd:sequence>
<xsd:element name="Rechtswert">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="11"/>
<xsd:fractionDigits value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Hochwert">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="10"/>
<xsd:fractionDigits value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="HoeheGOK">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:totalDigits value="7"/>
<xsd:fractionDigits value="3"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Lagegenauigkeitsstufe">
<xsd:simpleType>
<xsd:restriction base="LagestufeType"/>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,478 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- XML-Schema f<>r ISYBAU-Austauschformat Datenbereich Metadaten -->
<!-- Letzte Bearbeitung: 31.08.2007 -->
<!-- Formatversion 0610 -->
<xsd:schema xmlns="http://www.ofd-hannover.la/Identifikation" xmlns:isy="http://www.ofd-hannover.la/Identifikation" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ofd-hannover.la/Identifikation" elementFormDefault="qualified">
<xsd:include schemaLocation=".\0610-stammdaten.xsd"/>
<xsd:include schemaLocation=".\0610-zustandsdaten.xsd"/>
<xsd:include schemaLocation=".\0610-referenzlisten.xsd"/>
<xsd:include schemaLocation=".\0610-hydraulikdaten.xsd"/>
<xsd:include schemaLocation=".\0610-betriebsdaten.xsd"/>
<xsd:annotation>
<xsd:documentation xml:lang="de">ISYBAU-Austauschformat Datenbereich Metadaten</xsd:documentation>
</xsd:annotation>
<xsd:element name="Identifikation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Version" type="xsd:gYearMonth"/>
<xsd:element name="Admindaten" type="AdmindatenType"/>
<xsd:element name="Datenkollektive" type="DatenkollektiveType">
<xsd:key name="MKollektivKey">
<xsd:selector xpath="isy:Kennungen/isy:Kollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:key>
<xsd:unique name="SKollektivKey">
<xsd:selector xpath="isy:Stammdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:unique>
<xsd:keyref name="SKollektivRef" refer="MKollektivKey">
<xsd:selector xpath="isy:Stammdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:keyref>
<xsd:unique name="ZKollektivKey">
<xsd:selector xpath="isy:Zustandsdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:unique>
<xsd:keyref name="ZKollektivRef" refer="MKollektivKey">
<xsd:selector xpath="isy:Zustandsdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:keyref>
<xsd:unique name="HKollektivKey">
<xsd:selector xpath="isy:Hydraulikdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:unique>
<xsd:keyref name="HKollektivRef" refer="MKollektivKey">
<xsd:selector xpath="isy:Hydraulikdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:keyref>
<xsd:unique name="BKollektivKey">
<xsd:selector xpath="isy:Betriebsdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:unique>
<xsd:keyref name="BKollektivRef" refer="MKollektivKey">
<xsd:selector xpath="isy:Betriebsdatenkollektiv"/>
<xsd:field xpath="isy:Kennung"/>
</xsd:keyref>
<xsd:unique name="UmfeldKey">
<xsd:selector xpath="isy:Stammdatenkollektiv/isy:Umfelder/isy:Umfeld"/>
<xsd:field xpath="isy:Bezeichnung"/>
</xsd:unique>
<xsd:keyref name="SUmfeldRef" refer="UmfeldKey">
<xsd:selector xpath="isy:Stammdatenkollektiv/isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Versickerungsanlage"/>
<xsd:field xpath="isy:Umfeld"/>
</xsd:keyref>
<xsd:keyref name="BoUmfeldRef" refer="UmfeldKey">
<xsd:selector xpath="isy:Betriebsdatenkollektiv/isy:Beobachtungen/isy:Boden/isy:Bodenkennwerte"/>
<xsd:field xpath="isy:Umfeld"/>
</xsd:keyref>
<xsd:keyref name="GwUmfeldRef" refer="UmfeldKey">
<xsd:selector xpath="isy:Betriebsdatenkollektiv/isy:Beobachtungen/isy:Grundwasser/isy:GWMessstelle"/>
<xsd:field xpath="isy:Umfeld"/>
</xsd:keyref>
<xsd:keyref name="HStammKollektivRef" refer="MKollektivKey">
<xsd:selector xpath="isy:Hydraulikdatenkollektiv/isy:Rechennetz"/>
<xsd:field xpath="isy:Stammdatenkennung"/>
</xsd:keyref>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="AdmindatenType">
<xsd:sequence>
<xsd:element name="Liegenschaft" type="LiegenschaftType"/>
<xsd:element name="Verwaltung" type="VerwaltungType" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="LiegenschaftType">
<xsd:sequence>
<xsd:element name="Liegenschaftsnummer">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Objektnummer" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Liegenschaftsbezeichnung">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Liegenschaftsstrasse" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LiegenschaftsPLZ" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="5"/>
<xsd:maxLength value="5"/>
<xsd:pattern value="\p{N}{5}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Liegenschaftsort" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Liegenschaftsnutzung" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="VerwaltungType">
<xsd:sequence>
<xsd:element name="Zustaendigkeit" type="ZustaendigkeitType" minOccurs="0"/>
<xsd:element name="DienststelleVerwaltend" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="DienststelleHausverwaltend" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="DienststelleBauaufsicht" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="DienststelleBaudurchfuehrung" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="NummerDienststelleBaudurchfuehrung" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Zustaendigkeitsbereich" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Aktenzeichen" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Abwasserbeseitigungspflicht" type="AbwasserbeseitigungspflichtType" minOccurs="0"/>
<xsd:element name="Wasserbehoerde" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="AblaufEinleitungsgenehmigung" type="xsd:date" minOccurs="0"/>
<xsd:element name="Kommentar" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="DatenkollektiveType">
<xsd:sequence>
<xsd:element name="Datenstatus" type="DatenstatusType"/>
<xsd:element name="Erstellungsdatum" type="xsd:date"/>
<xsd:element name="Kommentar" type="xsd:token" minOccurs="0"/>
<xsd:element name="Kennungen">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Kollektiv" type="KollektivType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Stammdatenkollektiv" type="StammdatenType" minOccurs="0" maxOccurs="unbounded">
<xsd:key name="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Objektart"/>
</xsd:key>
<xsd:keyref name="UeberPumpeKey" refer="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Pumpe/isy:UebergeordnetesBauwerk"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
</xsd:keyref>
<xsd:keyref name="UeberWehrKey" refer="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Wehr_Ueberlauf/isy:UebergeordnetesBauwerk"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
</xsd:keyref>
<xsd:keyref name="UeberDrosselKey" refer="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Drossel/isy:UebergeordnetesBauwerk"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
</xsd:keyref>
<xsd:keyref name="UeberSchieberKey" refer="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Schieber/isy:UebergeordnetesBauwerk"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
</xsd:keyref>
<xsd:keyref name="UeberSiebKey" refer="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Sieb/isy:UebergeordnetesBauwerk"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
</xsd:keyref>
<xsd:keyref name="UeberRechenKey" refer="SObjektKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Knoten/isy:Bauwerk/isy:Rechen/isy:UebergeordnetesBauwerk"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
</xsd:keyref>
<xsd:key name="SAuftragKey">
<xsd:selector xpath="isy:Auftraege/isy:Auftrag"/>
<xsd:field xpath="isy:Auftragskennung"/>
</xsd:key>
<xsd:unique name="SAuftragBezKey">
<xsd:selector xpath="isy:Auftraege/isy:Auftrag"/>
<xsd:field xpath="isy:Auftragsbezeichnung"/>
</xsd:unique>
<xsd:keyref name="SAuftragRef" refer="SAuftragKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Sanierung/isy:Massnahme"/>
<xsd:field xpath="isy:Auftragskennung"/>
</xsd:keyref>
<xsd:unique name="SKanteKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Kante/isy:KantenTyp"/>
</xsd:unique>
<xsd:unique name="SKnotenKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Knoten/isy:KnotenTyp"/>
</xsd:unique>
<xsd:keyref name="AnschlussHaltungKey" refer="SKanteKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Kante/isy:Haltung/isy:Anschlussdaten"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Kantentyp"/>
</xsd:keyref>
<xsd:keyref name="AnschlussLeitungKey" refer="SKanteKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage/isy:Kante/isy:Leitung/isy:Anschlussdaten"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Kantentyp"/>
</xsd:keyref>
<xsd:keyref name="ZulaufKnotenKey" refer="SKnotenKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage"/>
<xsd:field xpath="isy:Kante/isy:KnotenZulauf"/>
<xsd:field xpath="isy:Kante/isy:KnotenZulaufTyp"/>
</xsd:keyref>
<xsd:keyref name="AblaufKnotenKey" refer="SKnotenKey">
<xsd:selector xpath="isy:AbwassertechnischeAnlage"/>
<xsd:field xpath="isy:Kante/isy:KnotenAblauf"/>
<xsd:field xpath="isy:Kante/isy:KnotenAblaufTyp"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="Zustandsdatenkollektiv" type="ZustandsdatenType" minOccurs="0" maxOccurs="unbounded">
<xsd:unique name="ZObjektKey">
<xsd:selector xpath="isy:InspizierteAbwassertechnischeAnlage"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Anlagentyp"/>
<xsd:field xpath="isy:OptischeInspektion/isy:Rohrleitung/isy:Inspektionsrichtung"/>
</xsd:unique>
<xsd:keyref name="ZObjektRef" refer="ZObjektKey">
<xsd:selector xpath="isy:Filme/isy:Film/isy:FilmObjekte/isy:FilmObjekt"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Typ"/>
<xsd:field xpath="isy:Inspektionsrichtung"/>
</xsd:keyref>
<xsd:unique name="FObjektKey">
<xsd:selector xpath="isy:Filme/isy:Film/isy:FilmObjekte/isy:FilmObjekt"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:Typ"/>
<xsd:field xpath="isy:Inspektionsrichtung"/>
</xsd:unique>
<xsd:key name="UAuftragKey">
<xsd:selector xpath="isy:Auftraege/isy:Auftrag"/>
<xsd:field xpath="isy:Auftragskennung"/>
</xsd:key>
<xsd:unique name="UAuftragBezKey">
<xsd:selector xpath="isy:Auftraege/isy:Auftrag"/>
<xsd:field xpath="isy:Auftragsbezeichnung"/>
</xsd:unique>
<xsd:keyref name="IAuftragRef" refer="UAuftragKey">
<xsd:selector xpath="isy:InspizierteAbwassertechnischeAnlage/isy:OptischeInspektion"/>
<xsd:field xpath="isy:Auftragskennung"/>
</xsd:keyref>
<xsd:keyref name="DAuftragRef" refer="UAuftragKey">
<xsd:selector xpath="isy:InspizierteAbwassertechnischeAnlage/isy:Dichtheitspruefungen/isy:Pruefung"/>
<xsd:field xpath="isy:Auftragskennung"/>
</xsd:keyref>
<xsd:keyref name="FAuftragRef" refer="UAuftragKey">
<xsd:selector xpath="isy:Filme/isy:Film"/>
<xsd:field xpath="isy:Auftragskennung"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="Hydraulikdatenkollektiv" type="HydraulikdatenType" minOccurs="0" maxOccurs="unbounded">
<xsd:unique name="HVerfahrenKey">
<xsd:selector xpath="isy:Verfahrensvorgaben/isy:Verfahren"/>
<xsd:field xpath="isy:Verfahrenskennung"/>
</xsd:unique>
<xsd:unique name="HRechennetzObjektKey">
<xsd:selector xpath="isy:Rechennetz/isy:HydraulikObjekte/isy:HydraulikObjekt"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:HydObjektTyp"/>
</xsd:unique>
<xsd:unique name="HGebietKey">
<xsd:selector xpath="isy:Gebiete/isy:Gebiet"/>
<xsd:field xpath="isy:Gebietskennung"/>
</xsd:unique>
<xsd:unique name="HFlaechenIDKey">
<xsd:selector xpath="isy:Flaechen/isy:Flaeche"/>
<xsd:field xpath="isy:Flaechennummer"/>
</xsd:unique>
<xsd:unique name="HFlaecheKey">
<xsd:selector xpath="isy:Flaechen/isy:Flaeche"/>
<xsd:field xpath="isy:Flaechenbezeichnung"/>
</xsd:unique>
<xsd:unique name="HNiederschlagKey">
<xsd:selector xpath="isy:Systembelastungen/isy:Niederschlaege/isy:Niederschlag"/>
<xsd:field xpath="isy:Niederschlagkennung"/>
</xsd:unique>
<xsd:unique name="HTrwKey">
<xsd:selector xpath="isy:Systembelastungen/isy:Trockenwetterabflussspenden/isy:Trockenwetterabflussspende"/>
<xsd:field xpath="isy:Trockenwetterkennung"/>
</xsd:unique>
<xsd:unique name="HEinleiterKey">
<xsd:selector xpath="isy:Systembelastungen/isy:Einleiterkollektive/isy:Einleiterkollektiv"/>
<xsd:field xpath="isy:Einleiterkollektivkennung"/>
</xsd:unique>
<xsd:unique name="HBerechnungKey">
<xsd:selector xpath="isy:Berechnungen/isy:Berechnung/isy:BerechnungInfo"/>
<xsd:field xpath="isy:Rechenlaufkennung"/>
</xsd:unique>
<xsd:keyref name="HFlaecheGebietRef" refer="HGebietKey">
<xsd:selector xpath="isy:Flaechen/isy:Flaeche"/>
<xsd:field xpath="isy:Gebietskennung"/>
</xsd:keyref>
<xsd:keyref name="HFlaecheRef" refer="HFlaechenIDKey">
<xsd:selector xpath="isy:Flaechen/isy:Flaeche/isy:Flaechenobjekt"/>
<xsd:field xpath="isy:Flaechennummer"/>
</xsd:keyref>
<xsd:keyref name="HFlaecheObjektRef" refer="HRechennetzObjektKey">
<xsd:selector xpath="isy:Flaechen/isy:Flaeche/isy:HydraulikObjekt"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:HydObjektTyp"/>
</xsd:keyref>
<xsd:keyref name="HEinzeleinleiterObjektRef" refer="HRechennetzObjektKey">
<xsd:selector xpath="isy:Systembelastungen/isy:Einleiterkollektive/isy:Einleiterkollektiv/isy:ListeEinzeleinleiter/isy:Einzeleinleiter/isy:HydraulikObjekt"/>
<xsd:field xpath="isy:Objektbezeichnung"/>
<xsd:field xpath="isy:HydObjektTyp"/>
</xsd:keyref>
<xsd:keyref name="HVerfahrenRef" refer="HVerfahrenKey">
<xsd:selector xpath="isy:Berechnungen/isy:Berechnung/isy:BerechnungInfo"/>
<xsd:field xpath="isy:Verfahrenskennung"/>
</xsd:keyref>
<xsd:keyref name="HEinleiterRef" refer="HEinleiterKey">
<xsd:selector xpath="isy:Berechnungen/isy:Berechnung/isy:BerechnungInfo"/>
<xsd:field xpath="isy:Einleiterkollektivkennung"/>
</xsd:keyref>
<xsd:keyref name="HTrwRef" refer="HTrwKey">
<xsd:selector xpath="isy:Gebiete/isy:Gebiet"/>
<xsd:field xpath="isy:Trockenwetterkennung"/>
</xsd:keyref>
<xsd:keyref name="HNiederschlag1Ref" refer="HNiederschlagKey">
<xsd:selector xpath="isy:Berechnungen/isy:Berechnung/isy:BerechnungInfo/isy:Niederschlagsbelastung/isy:GleichmaessigeUeberregnung"/>
<xsd:field xpath="isy:Niederschlagkennung"/>
</xsd:keyref>
<xsd:keyref name="HNiederschlag2Ref" refer="HNiederschlagKey">
<xsd:selector xpath="isy:Berechnungen/isy:Berechnung/isy:BerechnungInfo/isy:Niederschlagsbelastung/isy:UngleichmaessigeUeberregnung/isy:FlaechenNiederschlag"/>
<xsd:field xpath="isy:Niederschlagkennung"/>
</xsd:keyref>
<xsd:keyref name="HFlaeche2Ref" refer="HFlaechenIDKey">
<xsd:selector xpath="isy:Berechnungen/isy:Berechnung/isy:BerechnungInfo/isy:Niederschlagsbelastung/isy:UngleichmaessigeUeberregnung/isy:FlaechenNiederschlag"/>
<xsd:field xpath="isy:Flaechennummer"/>
</xsd:keyref>
</xsd:element>
<xsd:element name="Betriebsdatenkollektiv" type="BetriebsdatenType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="Kostendatenkollektiv" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="KollektivType">
<xsd:sequence>
<xsd:element name="Kennung">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Kollektivart" type="KollektivartType"/>
<xsd:element name="Kollektiveigenschaft">
<xsd:complexType>
<xsd:choice>
<xsd:element name="Stammdaten" type="StammType"/>
<xsd:element name="Zustandsdaten" type="ZustandType"/>
<xsd:element name="Hydraulikdaten" type="HydraulikType"/>
<xsd:element name="Betriebsdaten" type="BetriebType"/>
<xsd:element name="Kostendaten">
<xsd:complexType/>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name="Regelwerk" type="RegelwerkType"/>
<xsd:element name="Bearbeitungsstand" type="xsd:date"/>
<xsd:element name="Kommentar" type="xsd:token" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="StammType">
<xsd:sequence>
<xsd:element name="Stammdatentyp">
<xsd:simpleType>
<xsd:restriction base="StammdatentypType"/>
</xsd:simpleType>
</xsd:element>
<xsd:element name="Bautechnik" type="xsd:boolean"/>
<xsd:element name="Geometrie" type="xsd:boolean"/>
<xsd:element name="Sanierung" type="xsd:boolean"/>
<xsd:element name="Umfeld" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZustandType">
<xsd:sequence>
<xsd:element name="Inspektion" type="xsd:boolean"/>
<xsd:element name="Dichtheit" type="xsd:boolean"/>
<xsd:element name="Film" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="HydraulikType">
<xsd:sequence>
<xsd:element name="Verfahren" type="xsd:boolean"/>
<xsd:element name="Rechennetz" type="xsd:boolean"/>
<xsd:element name="Gebiet" type="xsd:boolean"/>
<xsd:element name="Flaechen" type="xsd:boolean"/>
<xsd:element name="Belastung" type="xsd:boolean"/>
<xsd:element name="Berechnung" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BetriebType">
<xsd:sequence>
<xsd:element name="Beobachtung" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,286 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace SchnittstelleImporter.XML2006
{
/// <summary>
///
/// </summary>
public static class XMLParser
{
/// <summary>
///
/// </summary>
public static Dictionary<InspizierteAbwassertechnischeAnlage, string> anlageInFile = new Dictionary<InspizierteAbwassertechnischeAnlage, string>();
/// <summary>
/// Gibt eine Liste an anlagen zurück von einer XML Datei.
/// </summary>
/// <param name="xmldatei"></param>
/// <returns></returns>
public static List<InspizierteAbwassertechnischeAnlage> GetList(string xmldatei)
{
List<InspizierteAbwassertechnischeAnlage> result = new List<InspizierteAbwassertechnischeAnlage>();
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);
XmlNode zstdk = root.SelectSingleNode("//e:Zustandsdatenkollektiv", manager);
XmlNodeList inspizierteDaten = zstdk.SelectNodes("//e:InspizierteAbwassertechnischeAnlage", manager);
foreach (XmlNode node in inspizierteDaten)
{
InspizierteAbwassertechnischeAnlage anlage = GetAnlage(node);
if (anlage == null) continue;
result.Add(anlage);
anlageInFile.Add(anlage, xmldatei);
}
return result;
}
private static InspizierteAbwassertechnischeAnlage GetAnlage(XmlNode xml)
{
XmlNode intOptischeInspektion = null;
XmlNode intRohrleitung = null;
XmlNode intRGrunddaten = null;
XmlNode intInspektionsdaten = null;
InspizierteAbwassertechnischeAnlage result = new InspizierteAbwassertechnischeAnlage();
foreach (XmlNode d in xml.ChildNodes)
{
switch (d.Name)
{
case "Objektbezeichnung":
result.Objektbezeichnung = d.InnerText;
break;
case "Anlagentyp":
result.Anlagentyp = (EAnlagetyp)Convert.ToInt32(d.InnerText); //anlagentyp = Convert.ToInt32(d.InnerText);
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 "Strassenschluessel": break;
default: throw new NotImplementedException(_temp.Name);
}
}
result.Lage = new Lage(strassename, ortname);
break;
case "OptischeInspektion":
intOptischeInspektion = d;
break;
}
}
if (intOptischeInspektion == null)
throw new Exception("Es scheint was schief gelaufen zu sein, OptischeInspektion is null");
string datum = "";
string time = "";
OptischeInspektion optischeInspektion = new OptischeInspektion();
foreach (XmlNode d in intOptischeInspektion)
{
switch (d.Name)
{
case "Inspektionsdatum":
datum = d.InnerText;
break;
case "Uhrzeit":
time = d.InnerText;
break;
case "Rohrleitung":
intRohrleitung = d;
break;
}
}
string[] parseddatum = datum.Split('-');
int year = Convert.ToInt32(parseddatum[0]);
int month = Convert.ToInt32(parseddatum[1]);
int day = Convert.ToInt32(parseddatum[2]);
string[] parsedtime = time.Split(':');
int hour = Convert.ToInt32(parsedtime[0]);
int minute = Convert.ToInt32(parsedtime[1]);
int second = Convert.ToInt32(parsedtime[2]);
DateTime dt = new DateTime(year, month, day, hour, minute, second);
optischeInspektion.Inspektionstime = dt;
if (intRohrleitung == null)
return null;
//throw new NotImplementedException("Schaechte sind noch nicht implementiert");
Rohrleitung rohr = new Rohrleitung();
foreach (XmlNode d in intRohrleitung)
{
switch (d.Name)
{
case "Rohrleitungstyp":
rohr.Rohrleitungstyp = (ERohrleitungstyp)Convert.ToInt32(d.InnerText);
break;
case "Inspektionslaenge":
rohr.Inspektionslaenge = Convert.ToDecimal(d.InnerText.Replace('.', ','));
break;
case "Inspektionsrichtung":
rohr.Inspektionsrichtung = d.InnerText;
break;
case "RGrunddaten":
intRGrunddaten = d;
break;
case "Inspektionsdaten":
intInspektionsdaten = d;
break;
}
}
//List<RZustand> rzustand = ParseRZustand(intInspektionsdaten);
rohr.Grunddaten = ParseGrundDaten(intRGrunddaten);
rohr.Zustaende = ParseRZustand(intInspektionsdaten);
optischeInspektion.Rohrleitung = rohr;
result.OptischeInspektion = optischeInspektion;
return result;
}
private static RGrunddaten ParseGrundDaten(XmlNode intRGrunddaten)
{
RGrunddaten grunddaten = new RGrunddaten();
foreach (XmlNode d in intRGrunddaten.ChildNodes)
{
switch (d.Name)
{
case "KnotenZulauf": grunddaten.KnotenZulauf = d.InnerText; break;
case "KnotenZulaufTyp": grunddaten.KnotenZulaufTyp = (EKnotenTyp)Convert.ToInt32(d.InnerText); break;
case "KnotenAblauf": grunddaten.KnotenAblauf = d.InnerText; break;
case "KnotenAblaufTyp": grunddaten.KnotenAblaufTyp = (EKnotenTyp)Convert.ToInt32(d.InnerText); break;
case "HerkunftProfilmasse": grunddaten.HerkunftProfilmasse = Convert.ToInt32(d.InnerText); break;
case "Profilhoehe": grunddaten.Profilhoehe = Convert.ToInt32(d.InnerText); break;
case "Profilbreite": grunddaten.Profilbreite = Convert.ToInt32(d.InnerText); break;
case "Profilart": grunddaten.Profilart = Convert.ToInt32(d.InnerText); break;
case "HerkunftMaterial": grunddaten.HerkunftMaterial = Convert.ToInt32(d.InnerText); break;
case "Material": grunddaten.Material = d.InnerText; break;
case "Regeleinzelrohrlaenge": grunddaten.Regeleinzelrohrlaenge = Convert.ToDecimal(d.InnerText.Replace('.', ',')); break;
case "ArtAuskleidung": grunddaten.ArtAuskleidung = Convert.ToInt32(d.InnerText); break;
case "Kanalart": grunddaten.Kanalart = d.InnerText; break;
case "Anschlussdaten": grunddaten.Anschlussddaten = ParseAnschlussdaten(d); break;
case "Innenschutz": grunddaten.Innenschutz = d.InnerText; break;
default: throw new NotImplementedException(d.Name);
}
}
return grunddaten;
}
private static Anschlussdaten ParseAnschlussdaten(XmlNode anschlussdaten)
{
Anschlussdaten result = new Anschlussdaten();
foreach (XmlNode d in anschlussdaten.ChildNodes)
{
switch (d.Name)
{
case "Objektbezeichnung": result.Objektbezeichnung = d.InnerText; break;
case "Kantentyp": result.Kantentyp = (EKantenTyp)Convert.ToInt32(d.InnerText); break;
case "Entfernung": result.Entfernung = Convert.ToDecimal(d.InnerText.Replace('.', ',')); break;
case "Fixierung": result.Fixierung = d.InnerText; break;
default: Trace.WriteLine(d.Name); break;
}
}
return result;
}
private static List<RZustand> ParseRZustand(XmlNode node)
{
List<RZustand> result = new List<RZustand>();
foreach (XmlNode child in node.ChildNodes)
{
RZustand rZustand = new RZustand();
foreach (XmlNode d in child.ChildNodes)
{
switch (d.Name)
{
case "Station":
rZustand.Station = Convert.ToDecimal(d.InnerText.Replace('.', ','));
break;
case "InspektionsKode":
rZustand.Inspektionskode = d.InnerText;
break;
case "Charakterisierung1":
rZustand.Charakterisierung1 = d.InnerText;
break;
case "Charakterisierung2":
rZustand.Charakterisierung2 = d.InnerText;
break;
case "Verbindung":
rZustand.Verbindung = d.InnerText.Equals("0") ? false : true;
break;
case "PositionVon":
rZustand.PositionVon = Convert.ToInt32(d.InnerText);
break;
case "PositionBis":
rZustand.PositionBis = Convert.ToInt32(d.InnerText);
break;
case "Quantifizierung1Numerisch":
Quantifizierung quantifizierung1 = new Quantifizierung();
quantifizierung1.Numerisch = Convert.ToDecimal(d.InnerText.Replace('.', ','));
rZustand.Quantifizierung1 = quantifizierung1;
break;
case "Quantifizierung2Numerisch":
Quantifizierung quantifizierung2 = new Quantifizierung();
quantifizierung2.Numerisch = Convert.ToDecimal(d.InnerText.Replace('.', ','));
rZustand.Quantifizierung1 = quantifizierung2;
break;
case "Quantifizierung1Text":
Quantifizierung quantifizierung3 = new Quantifizierung();
quantifizierung3.Text = d.InnerText;
rZustand.Quantifizierung1 = quantifizierung3;
break;
case "Quantifizierung2Text":
Quantifizierung quantifizierung4 = new Quantifizierung();
quantifizierung4.Text = d.InnerText;
rZustand.Quantifizierung2 = quantifizierung4;
break;
case "Frame": break;
case "Klassifizierung": break;
case "Kommentar": rZustand.Kommentar = d.InnerText; break;
case "Streckenschaden": rZustand.Streckenschaden = d.InnerText; break;
case "StreckenschadenLfdNr": rZustand.Streckenschadennr = Convert.ToInt32(d.InnerText); break;
case "BezeichnungSanierung": break;
case "RVerfahrenSanierung": break;
case "Fotodatei": break;
case "FotoSpeichermedium": break;
case "Fotonummer": break;
case "Timecode": break;
case "GrundAbbruch": break;
default: throw new NotImplementedException(d.Name);
}
}
result.Add(rZustand);
}
return result;
}
}
}