public static VersionedXmlBase ParseFromBase64(string base64) { if (string.IsNullOrEmpty(base64)) { throw new CustomSerializationException(ServerStrings.ErrorInvalidConfigurationXml, new ArgumentNullException("base64")); } VersionedXmlBase result; using (MemoryStream memoryStream = new MemoryStream(Convert.FromBase64String(base64))) { result = VersionedXmlBase.Deserialize(memoryStream); } return(result); }
public static VersionedXmlBase Parse(string xml) { if (string.IsNullOrEmpty(xml)) { throw new CustomSerializationException(ServerStrings.ErrorInvalidConfigurationXml, new ArgumentNullException("xml")); } VersionedXmlBase result; using (MemoryStream memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(xml))) { result = VersionedXmlBase.Deserialize(memoryStream); } return(result); }
internal static VersionedXmlBase Deserialize(Stream stream) { if (stream == null) { throw new ArgumentNullException("stream"); } if (!stream.CanSeek) { throw new ArgumentException("stream"); } long position = stream.Position; XmlReaderSettings xmlReaderSettings = new XmlReaderSettings(); xmlReaderSettings.ConformanceLevel = ConformanceLevel.Auto; string text = null; Version version = null; using (XmlReader xmlReader = XmlReader.Create(stream, xmlReaderSettings)) { while (xmlReader.Read()) { if (XmlNodeType.Element == xmlReader.NodeType) { text = xmlReader.Name; string attribute = xmlReader.GetAttribute("Version"); if (!string.IsNullOrEmpty(attribute)) { version = new Version(attribute); break; } break; } } } if (string.IsNullOrEmpty(text) || null == version) { return(null); } stream.Seek(position, SeekOrigin.Begin); return((VersionedXmlBase)VersionedXmlBase.Deserialize(VersionedXmlTypeFactory.GetTypeInstance(text, version), stream)); }