Index: DamTools/LayerOnSlopeTool/trunk/src/Deltares.LayerOnSlopeTool.Io/MStabDamXmlSerializer.cs =================================================================== diff -u -r3114 -r3115 --- DamTools/LayerOnSlopeTool/trunk/src/Deltares.LayerOnSlopeTool.Io/MStabDamXmlSerializer.cs (.../MStabDamXmlSerializer.cs) (revision 3114) +++ DamTools/LayerOnSlopeTool/trunk/src/Deltares.LayerOnSlopeTool.Io/MStabDamXmlSerializer.cs (.../MStabDamXmlSerializer.cs) (revision 3115) @@ -27,8 +27,22 @@ namespace Deltares.LayerOnSlopeTool.Io { + /// Serialize and de-serialize form XML + /// DGSMStabDam.dll requires XML-element identifiers which are prefixed with "tns:" and "tnsb:". + /// These prefixes cannot be handled by the automatic XML serializer object generation with XSD.exe + /// So we apply pre- and post- processors to add and remove these prefixes. + /// Also the XML identification header has to be changed to accomodate this. public class MStabDamXmlSerializer { + private const string tnsPrefixSrc = "tnsPrefix"; + private const string tnsPrefixDest = "tns:"; + private const string tnsbPrefixSrc = "tnsbPrefix"; + private const string tnsbPrefixDest = "tnsb:"; + private const string idLineSrc = + @""; + private const string idLineDest = + @""; + /// /// Saves the tnsPrefixDamMStabDoc as XML. /// @@ -63,23 +77,42 @@ XmlSerializer xmlSerializer = new XmlSerializer(typeof(tnsPrefixDamMStabDoc)); TextWriter writer = new StringWriter(); xmlSerializer.Serialize(writer, tnsPrefixDamMStabDoc); - return writer.ToString(); + string xmlString = writer.ToString(); + xmlString = PreProcessPrefixes(xmlString); + return xmlString; } + private static string PreProcessPrefixes(string xmlString) + { + xmlString = xmlString.Replace(tnsbPrefixSrc, tnsbPrefixDest); + xmlString = xmlString.Replace(tnsPrefixSrc, tnsPrefixDest); + xmlString = xmlString.Replace(idLineSrc, idLineDest); + return xmlString; + } + /// /// Loads the tnsPrefixDamMStabDoc from XML string. /// /// The XML string. /// tnsPrefixDamMStabDoc object public static tnsPrefixDamMStabDoc LoadDamMStabDocFromXmlString(string xmlString) { + xmlString = PostProcessPrefixes(xmlString); tnsPrefixDamMStabDoc tnsPrefixDamMStabDoc; XmlSerializer xmlSerializer = new XmlSerializer(typeof(tnsPrefixDamMStabDoc)); StringReader reader = new StringReader(xmlString); tnsPrefixDamMStabDoc = (tnsPrefixDamMStabDoc)xmlSerializer.Deserialize(reader); return tnsPrefixDamMStabDoc; } + private static string PostProcessPrefixes(string xmlString) + { + xmlString = xmlString.Replace(tnsbPrefixDest, tnsbPrefixSrc); + xmlString = xmlString.Replace(tnsPrefixDest, tnsPrefixSrc); + xmlString = xmlString.Replace(idLineDest, idLineSrc); + return xmlString; + } + private static tnsPrefixDamMStabDocTnsPrefixFileIdentification CreateFileIdentification() { tnsPrefixDamMStabDocTnsPrefixFileIdentification tnsPrefixDamMStabDocFileIdentification = new tnsPrefixDamMStabDocTnsPrefixFileIdentification();