Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Persistence/3.3/Default/Xml/Primitive/String2XmlSerializer.cs @ 1853

Last change on this file since 1853 was 1853, checked in by epitzer, 15 years ago

Fix EmptyStorableClass attributes. (#603)

File size: 1.1 KB
Line 
1using System;
2using HeuristicLab.Persistence.Core;
3using HeuristicLab.Persistence.Interfaces;
4using System.Text;
5using System.Text.RegularExpressions;
6using System.Globalization;
7
8
9namespace HeuristicLab.Persistence.Default.Xml.Primitive {
10
11  public class String2XmlSerializer : PrimitiveXmlSerializerBase<string> {
12
13    public override XmlString Format(string s) {
14      StringBuilder sb = new StringBuilder();
15      sb.Append("<![CDATA[");
16      sb.Append(s.Replace("]]>", "]]]]><![CDATA[>"));
17      sb.Append("]]>");
18      return new XmlString(sb.ToString());
19    }
20
21    public override string Parse(XmlString x) {
22      StringBuilder sb = new StringBuilder();
23      Regex re = new Regex(@"<!\[CDATA\[((?:[^]]|\](?!\]>))*)\]\]>", RegexOptions.Singleline);
24      foreach (Match m in re.Matches(x.Data)) {
25        sb.Append(m.Groups[1]);
26      }
27      string result = sb.ToString();
28      if (result.Length == 0 && x.Data.Length > 0 && !x.Data.Equals("<![CDATA[]]>"))
29        throw new PersistenceException("Invalid CDATA section during string parsing.");
30      return sb.ToString();
31    }
32  }
33}
Note: See TracBrowser for help on using the repository browser.