XML Writer angefangen
This commit is contained in:
143
WWTech_KanalSchnittstelle/Exporter/XML/XML2006.cs
Normal file
143
WWTech_KanalSchnittstelle/Exporter/XML/XML2006.cs
Normal file
@@ -0,0 +1,143 @@
|
||||
using Microsoft.Win32.SafeHandles;
|
||||
using SewerStammGen.Shared.Contracts;
|
||||
using SewerStammGen.Shared.Domain;
|
||||
using SewerStammGen.Shared.Enum;
|
||||
using Shared.Contracts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml;
|
||||
|
||||
namespace WWTech_KanalSchnittstelle.Exporter.XML
|
||||
{
|
||||
public class XML2006 : IExport
|
||||
{
|
||||
private XmlDocument _file;
|
||||
private List<Schacht> _schaechte;
|
||||
private List<Kanal> _haltungen;
|
||||
public async Task<bool> Export(string projektname, EKodierungssystem kodierungssystem, List<Kanal> haltungen, List<Schacht> schaechte)
|
||||
{
|
||||
_schaechte = schaechte;
|
||||
_haltungen = haltungen;
|
||||
_file = new XmlDocument();
|
||||
XmlDeclaration newChild = _file.CreateXmlDeclaration("1.0", "ISO-8859-1", "yes");
|
||||
_file.AppendChild(newChild);
|
||||
XmlElement xmlElement = CreateElementFor("Identifikation", _file);
|
||||
xmlElement.SetAttribute("xmlns", "http://www.ofd-hannover.la/Identifikation");
|
||||
XmlElement xmlElement2 = CreateElementFor("Version", xmlElement);
|
||||
xmlElement2.InnerText = "2-3";
|
||||
DoAdmindata(xmlElement);
|
||||
DoCollectives(xmlElement);
|
||||
|
||||
_file.Save("test.xml");
|
||||
return true;
|
||||
}
|
||||
|
||||
private XmlElement CreateElementFor(string name, XmlNode parentElement)
|
||||
{
|
||||
XmlElement xmlElement = _file.CreateElement(name);
|
||||
parentElement.AppendChild(xmlElement);
|
||||
return xmlElement;
|
||||
}
|
||||
|
||||
private void DoAdmindata(XmlElement idElement)
|
||||
{
|
||||
XmlElement parentElement = CreateElementFor("Admindaten", idElement);
|
||||
|
||||
}
|
||||
|
||||
private void DoCollectives(XmlElement idElement)
|
||||
{
|
||||
XmlElement dataCollectiveElement = DoRow(idElement, "Datenkollektive");
|
||||
DoCollectives1Labels(dataCollectiveElement);
|
||||
DoCollectives2Base(dataCollectiveElement);
|
||||
}
|
||||
|
||||
private void DoCollectives2Base(XmlElement dataCollectiveElement)
|
||||
{
|
||||
XmlElement parentElement = DoRow(dataCollectiveElement, "Stammdatenkollektiv");
|
||||
foreach(Schacht schacht in _schaechte)
|
||||
{
|
||||
XmlElement xmlElement = DoSchachtRow(schacht,parentElement, "AbwassertechnischeAnlage");
|
||||
}
|
||||
}
|
||||
|
||||
private XmlElement DoSchachtRow(Schacht schacht, XmlElement parentElement, string originTableName)
|
||||
{
|
||||
XmlElement xmlElement = null;
|
||||
xmlElement = _file.CreateElement(originTableName);
|
||||
parentElement.AppendChild(xmlElement);
|
||||
|
||||
DoRowValue(xmlElement, "Objektbezeichnung", schacht.Objektbezeichnung);
|
||||
DoRowValue(xmlElement, "Objektart", "2");
|
||||
DoRowValue(xmlElement, "Entwaesserungsart", schacht.Entwaesserung == EEntwaeserung.Regenwasser ? "KR" : schacht.Entwaesserung == EEntwaeserung.Schmutzwasser ? "KS" : "KM");
|
||||
|
||||
XmlElement xmlElement1 = CreateElementFor("Knoten", xmlElement);
|
||||
DoRowValue(xmlElement1, "KnotenTyp", "0");
|
||||
|
||||
XmlElement xmlElement2 = CreateElementFor("Schacht", xmlElement1);
|
||||
DoRowValue(xmlElement2, "SchachtFunktion", "1");
|
||||
|
||||
XmlElement GeometrieElement = CreateElementFor("Geometrie", xmlElement);
|
||||
XmlElement KnotenElement = CreateElementFor("Knoten", GeometrieElement);
|
||||
XmlElement PunktElement = CreateElementFor("Punkt", KnotenElement);
|
||||
DoRowValue(PunktElement, "Rechtswert", schacht.SohlRechtsWert.ToString());
|
||||
DoRowValue(PunktElement, "Hochwert", schacht.SohlHochWert.ToString());
|
||||
DoRowValue(PunktElement, "Punkthoehe", schacht.SohlHoehe.ToString());
|
||||
DoRowValue(PunktElement, "PunktattributAbwasser", "SMP");
|
||||
PunktElement = CreateElementFor("Punkt", KnotenElement);
|
||||
DoRowValue(PunktElement, "Rechtswert", schacht.DeckelRechtsWert.ToString());
|
||||
DoRowValue(PunktElement, "Hochwert", schacht.DeckelHochWert.ToString());
|
||||
DoRowValue(PunktElement, "Punkthoehe", schacht.DeckelHoehe.ToString());
|
||||
DoRowValue(PunktElement, "PunktattributAbwasser", "DMP");
|
||||
return xmlElement;
|
||||
}
|
||||
|
||||
private XmlElement DoHaltungRow(Kanal haltung, XmlElement parentElement, string orginalTableName)
|
||||
{
|
||||
XmlElement xmlElement = null;
|
||||
xmlElement = _file.CreateElement(orginalTableName);
|
||||
parentElement.AppendChild(xmlElement);
|
||||
|
||||
|
||||
|
||||
return xmlElement;
|
||||
}
|
||||
|
||||
private XmlElement DoRow(XmlElement parentElement, string originTableName)
|
||||
{
|
||||
XmlElement xmlElement = null;
|
||||
xmlElement = _file.CreateElement(originTableName);
|
||||
parentElement.AppendChild(xmlElement);
|
||||
return xmlElement;
|
||||
}
|
||||
|
||||
private void DoCollectives1Labels(XmlElement dataCollectiveElement)
|
||||
{
|
||||
XmlElement parentElement = CreateElementFor("Kennungen", dataCollectiveElement);
|
||||
XmlElement xmlElement = CreateElementFor("Kollektiv", parentElement);
|
||||
DoRowValue(xmlElement, "Kennung", "STA01");
|
||||
DoRowValue(xmlElement, "Kollektivart", "1");
|
||||
XmlElement parentElement2 = CreateElementFor("Kollektiveigenschaft", xmlElement);
|
||||
DoRow(parentElement2, "Stammdaten");
|
||||
DoRow(parentElement2, "Zustandsdaten");
|
||||
DoRow(parentElement2, "Hydraulikdaten");
|
||||
DoRow(parentElement2, "Betriebsdaten");
|
||||
DoRowValue(xmlElement, "Regelwerk", "2");
|
||||
DoRowValue(xmlElement, "Bearbeitungsstand", "2");
|
||||
DoRowValue(xmlElement, "Kommentar", "test");
|
||||
}
|
||||
|
||||
private XmlElement DoRowValue(XmlElement rowElement, string originColName, string value)
|
||||
{
|
||||
XmlElement xmlElement = CreateElementFor(originColName, rowElement);
|
||||
if(value != "")
|
||||
{
|
||||
xmlElement.InnerText = value;
|
||||
}
|
||||
return xmlElement;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user