/// <summary> /// Serialize the object to BinaryWriter. /// </summary> public void GetObjectData(XmlQueryDataWriter writer) { Debug.Assert(this.GetType() == typeof(WhitespaceRule), "Serialization of WhitespaceRule subclasses is not implemented"); // string localName; writer.WriteStringQ(localName); // string namespaceName; writer.WriteStringQ(namespaceName); // bool preserveSpace; writer.Write(preserveSpace); }
// // Internal methods // #if !SILVERLIGHT #if !HIDE_XSL /// <summary> /// Serialize the object to BinaryWriter. /// </summary> internal void GetObjectData(XmlQueryDataWriter writer) { // Encoding encoding; // NOTE: For Encoding we serialize only CodePage, and ignore EncoderFallback/DecoderFallback. // It suffices for XSLT purposes, but not in the general case. Debug.Assert(Encoding.Equals(Encoding.GetEncoding(Encoding.CodePage)), "Cannot serialize encoding correctly"); writer.Write(Encoding.CodePage); // bool omitXmlDecl; writer.Write(OmitXmlDeclaration); // NewLineHandling newLineHandling; writer.Write((sbyte)NewLineHandling); // string newLineChars; writer.WriteStringQ(NewLineChars); // TriState indent; writer.Write((sbyte)IndentInternal); // string indentChars; writer.WriteStringQ(IndentChars); // bool newLineOnAttributes; writer.Write(NewLineOnAttributes); // bool closeOutput; writer.Write(CloseOutput); // ConformanceLevel conformanceLevel; writer.Write((sbyte)ConformanceLevel); // bool checkCharacters; writer.Write(CheckCharacters); // XmlOutputMethod outputMethod; writer.Write((sbyte)outputMethod); // List<XmlQualifiedName> cdataSections; writer.Write(cdataSections.Count); foreach (XmlQualifiedName qname in cdataSections) { writer.Write(qname.Name); writer.Write(qname.Namespace); } // bool mergeCDataSections; writer.Write(mergeCDataSections); // string mediaType; writer.WriteStringQ(mediaType); // string docTypeSystem; writer.WriteStringQ(docTypeSystem); // string docTypePublic; writer.WriteStringQ(docTypePublic); // XmlStandalone standalone; writer.Write((sbyte)standalone); // bool autoXmlDecl; writer.Write(autoXmlDecl); // bool isReadOnly; writer.Write(ReadOnly); }
/// <summary> /// Serialize XmlQueryStaticData object into a byte array. /// </summary> public void GetObjectData(out byte[] data, out Type[] ebTypes) { MemoryStream dataStream = new MemoryStream(4096); XmlQueryDataWriter dataWriter = new XmlQueryDataWriter(dataStream); // First put the format version dataWriter.WriteInt32Encoded(CurrentFormatVersion); // XmlWriterSettings defaultWriterSettings; _defaultWriterSettings.GetObjectData(dataWriter); // IList<WhitespaceRule> whitespaceRules; if (_whitespaceRules == null) { dataWriter.Write(0); } else { dataWriter.Write(_whitespaceRules.Count); foreach (WhitespaceRule rule in _whitespaceRules) { rule.GetObjectData(dataWriter); } } // string[] names; if (_names == null) { dataWriter.Write(0); } else { dataWriter.Write(_names.Length); foreach (string name in _names) { dataWriter.Write(name); } } // StringPair[][] prefixMappingsList; if (_prefixMappingsList == null) { dataWriter.Write(0); } else { dataWriter.Write(_prefixMappingsList.Length); foreach (StringPair[] mappings in _prefixMappingsList) { dataWriter.Write(mappings.Length); foreach (StringPair mapping in mappings) { dataWriter.Write(mapping.Left); dataWriter.Write(mapping.Right); } } } // Int32Pair[] filters; if (_filters == null) { dataWriter.Write(0); } else { dataWriter.Write(_filters.Length); foreach (Int32Pair filter in _filters) { dataWriter.WriteInt32Encoded(filter.Left); dataWriter.WriteInt32Encoded(filter.Right); } } // XmlQueryType[] types; if (_types == null) { dataWriter.Write(0); } else { dataWriter.Write(_types.Length); foreach (XmlQueryType type in _types) { XmlQueryTypeFactory.Serialize(dataWriter, type); } } // XmlCollation[] collations; if (_collations == null) { dataWriter.Write(0); } else { dataWriter.Write(_collations.Length); foreach (XmlCollation collation in _collations) { collation.GetObjectData(dataWriter); } } // string[] globalNames; if (_globalNames == null) { dataWriter.Write(0); } else { dataWriter.Write(_globalNames.Length); foreach (string name in _globalNames) { dataWriter.Write(name); } } // EarlyBoundInfo[] earlyBound; if (_earlyBound == null) { dataWriter.Write(0); ebTypes = null; } else { dataWriter.Write(_earlyBound.Length); ebTypes = new Type[_earlyBound.Length]; int idx = 0; foreach (EarlyBoundInfo info in _earlyBound) { dataWriter.Write(info.NamespaceUri); ebTypes[idx++] = info.EarlyBoundType; } } dataWriter.Dispose(); data = dataStream.ToArray(); }
/// <summary> /// Serialize XmlQueryStaticData object into a byte array. /// </summary> public void GetObjectData(out byte[] data, out Type[] ebTypes) { MemoryStream dataStream = new MemoryStream(4096); XmlQueryDataWriter dataWriter = new XmlQueryDataWriter(dataStream); // First put the format version dataWriter.Write7BitEncodedInt(CurrentFormatVersion); // XmlWriterSettings defaultWriterSettings; _defaultWriterSettings.GetObjectData(dataWriter); // IList<WhitespaceRule> whitespaceRules; if (_whitespaceRules == null) { dataWriter.Write(0); } else { dataWriter.Write(_whitespaceRules.Count); foreach (WhitespaceRule rule in _whitespaceRules) { rule.GetObjectData(dataWriter); } } // string[] names; if (_names == null) { dataWriter.Write(0); } else { dataWriter.Write(_names.Length); foreach (string name in _names) { dataWriter.Write(name); } } // StringPair[][] prefixMappingsList; if (_prefixMappingsList == null) { dataWriter.Write(0); } else { dataWriter.Write(_prefixMappingsList.Length); foreach (StringPair[] mappings in _prefixMappingsList) { dataWriter.Write(mappings.Length); foreach (StringPair mapping in mappings) { dataWriter.Write(mapping.Left); dataWriter.Write(mapping.Right); } } } // Int32Pair[] filters; if (_filters == null) { dataWriter.Write(0); } else { dataWriter.Write(_filters.Length); foreach (Int32Pair filter in _filters) { dataWriter.Write7BitEncodedInt(filter.Left); dataWriter.Write7BitEncodedInt(filter.Right); } } // XmlQueryType[] types; if (_types == null) { dataWriter.Write(0); } else { dataWriter.Write(_types.Length); foreach (XmlQueryType type in _types) { XmlQueryTypeFactory.Serialize(dataWriter, type); } } // XmlCollation[] collations; if (_collations == null) { dataWriter.Write(0); } else { dataWriter.Write(_collations.Length); foreach (XmlCollation collation in _collations) { collation.GetObjectData(dataWriter); } } // string[] globalNames; if (_globalNames == null) { dataWriter.Write(0); } else { dataWriter.Write(_globalNames.Length); foreach (string name in _globalNames) { dataWriter.Write(name); } } // EarlyBoundInfo[] earlyBound; if (_earlyBound == null) { dataWriter.Write(0); ebTypes = null; } else { dataWriter.Write(_earlyBound.Length); ebTypes = new Type[_earlyBound.Length]; int idx = 0; foreach (EarlyBoundInfo info in _earlyBound) { dataWriter.Write(info.NamespaceUri); ebTypes[idx++] = info.EarlyBoundType; } } dataWriter.Dispose(); data = dataStream.ToArray(); }