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();